skip to Main Content

I’m trying to create a docker file (base os must be Centos) that will install mariadb, start mariadb, and keep mariadb running. So that I can use the container in gitlab to run my integration tests (Java). This is what I have so far

FROM centos:7
ENV container docker
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == 
systemd-tmpfiles-setup.service ] || rm -f $i; done); 
rm -f /lib/systemd/system/multi-user.target.wants/*;
rm -f /etc/systemd/system/*.wants/*;
rm -f /lib/systemd/system/local-fs.target.wants/*; 
rm -f /lib/systemd/system/sockets.target.wants/*udev*; 
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; 
rm -f /lib/systemd/system/basic.target.wants/*;
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

RUN rm /bin/sh && ln -s /bin/bash /bin/sh

# Install epel and java
RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel wget

ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/

EXPOSE 8080
EXPOSE 3306

# install mariadb
RUN yum -y install mariadb
RUN yum -y install mariadb-server
RUN systemctl start mariadb
ENTRYPOINT tail -f /dev/null

The error I’m getting is
Failed to get D-Bus connection: Operation not permitted

2

Answers


  1. You can do something like this:

    FROM centos/mariadb-102-centos7
    
    USER root
    # Install epel and java
    RUN yum install -y java-1.8.0-openjdk java-1.8.0-openjdk-devel wget
    
    ENV JAVA_HOME /usr/lib/jvm/java-1.8.0-openjdk/
    

    You can mount your code folder into this container and execute it with docker exec.

    It is recommended however you use two different containers: one for the db and one for your code. You can then pass the code container the env vars required to connect to the db container.

    Login or Signup to reply.
  2. nothing is running by default in containers including systemd so you cannot use systemd to start mariadb

    if we reference the official mariadb dockerfile, we can find that you can start mariadb by adding CMD ["mysqld"] to our dockerfile.

    you must also make sure to install mariadb in your container with RUN yum -y mariadb-server mariadb-client as it is not installed by default either

    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search