Docker CentOS – mariadb (estado de salida 0; esperado)

Intento crear dockerfile para build una image para un entorno de desarrollo local, pero cada vez que dejo que docker ejecute la image, el server de bases de datos (mariadb / mysql) sale con un estado 0.

2017-11-17 08:36:10,854 CRIT Supervisor running as root (no user in config file) 2017-11-17 08:36:10,864 INFO RPC interface 'supervisor' initialized 2017-11-17 08:36:10,865 CRIT Server 'unix_http_server' running without any HTTP authentication checking 2017-11-17 08:36:10,865 INFO supervisord started with pid 1 2017-11-17 08:36:11,873 INFO spawned: 'httpd' with pid 9 2017-11-17 08:36:11,876 INFO spawned: 'mariadb' with pid 10 2017-11-17 08:36:12,973 INFO success: httpd entenetworking RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2017-11-17 08:36:12,974 INFO success: mariadb entenetworking RUNNING state, process has stayed up for > than 1 seconds (startsecs) **2017-11-17 08:36:13,327 INFO exited: mariadb (exit status 0; expected)** 

No importa qué tipo de server de bases de datos (MariaDB / MySQL) intente agregar al file docker se sale.

Dockerfile

 FROM centos:centos7 # Install tools RUN yum -y install curl wget unzip git vim python-setuptools yum-utils which epel-release # Install Python and Supervisor RUN yum -y install python-setuptools \ && mkdir -p /var/log/supervisor \ && easy_install supervisor # Install Apache RUN yum -y install httpd # Install Remi Updated PHP 7 RUN wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm \ && rpm -Uvh remi-release-7.rpm \ && yum-config-manager --enable remi-php70 \ && yum -y install php php-devel php-gd php-pdo php-soap php-xmlrpc php-xml # Reconfigure Apache RUN sed -i 's/AllowOverride None/AllowOverride All/g' /etc/httpd/conf/httpd.conf \ && chown root:apache /var/www/html \ && chmod g+s /var/www/html # Install MariaDB RUN yum -y install mariadb-server COPY supervisord.conf /etc/supervisord.conf EXPOSE 80 3306 CMD ["/usr/bin/supervisord"] 

supervisord.conf

 [unix_http_server] file=/tmp/supervisor.sock [supervisord] nodaemon=true [program:mariadb] command=/usr/bin/mysqld_safe [program:httpd] command=/usr/sbin/httpd -DFOREGROUND [group:allservices] programs=mariadb,httpd [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface [supervisorctl] serverurl=unix:///tmp/supervisor.sock ; use a unix:// URL for a unix socket 

Te sugiero que encuentres una buena estrategia para depurar tu image MariaDB.

Mi solución es establecer un CMD temporal en Dockerfile con

 CMD ["sleep", "999999999999999"] 

Entonces, luego puede lanzar bash o sh en el contenedor iniciado y ejecutar el command MariaDB start binary o su command supervisord.

Sin embargo, te recomiendo seriamente que compones una stack que separe MariaDB de PHP7, persiguiendo el escenario donde cada contenedor ejecuta un solo process (y sé que PHP apesta por esto). Comience separando MariaDB de PHP;)