Docker CentOS – mariadb(退出状态0;预计)

我试图创builddockerfile为本地开发环境构build一个图像,但每次我让docker运行图像时,数据库服务器(mariadb / mysql)会以状态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 entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) 2017-11-17 08:36:12,974 INFO success: mariadb entered 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)** 

无论哪种types的数据库服务器(MariaDB / MySQL)我尝试添加到dockerfile它退出。

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 

我build议你找一个好的策略来debugging你的MariaDB镜像。

我的解决scheme是在Dockerfile中设置临时CMD

 CMD ["sleep", "999999999999999"] 

因此,您可以稍后在启动的容器中启动bash或sh,并启动您的MariaDB启动二进制文件或您的supervisord命令。

不过,我强烈build议你组合一个将MariaDB从PHP7中分离出来的堆栈,追踪每个容器运行一个进程的情况(我知道PHP对此很不满意)。 首先从PHP分离MariaDB;)