Docker CentOS - mariadb(退出状态0;预期)

时间:2017-11-17 10:31:40

标签: mysql docker mariadb

我正在尝试创建dockerfile来为本地开发环境构建映像,但每次让docker运行映像时,DB服务器(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)**

无论我使用哪种类型的数据库服务器(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

1 个答案:

答案 0 :(得分:0)

我建议您找一个调试MariaDB图像的好策略。

我的解决方案是使用

在Dockerfile中设置临时CMD
CMD ["sleep", "999999999999999"]

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

但是,我认真地建议你编写一个将MariaDB与PHP7分开的堆栈,追逐每个容器运行一个进程的场景(我知道,PHP很糟糕)。 首先将MariaDB与PHP分开;)