programing

Docker CentOS - mariadb(종료 상태 0, 예상됨)

yellowcard 2023. 10. 12. 22:41
반응형

Docker CentOS - mariadb(종료 상태 0, 예상됨)

로컬 개발 환경에 대한 이미지를 구축하기 위해 도커 파일을 생성하려고 하는데 도커가 이미지를 실행하도록 할 때마다 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)**

도커 파일에 DB 서버의 종류(MariaDB/MySQL)를 추가하려고 해도 종료됩니다.

도커파일

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"]

supervisor.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

MariaDB 이미지를 디버깅할 수 있는 좋은 전략을 찾길 권합니다.

내 해결책은 도커 파일에 임시 CMD를 설정하는 것입니다.

CMD ["sleep", "999999999999999"]

따라서 나중에 시작된 컨테이너에서 bash 또는 sh를 실행하고 MariaDB start binary 또는 supervisor 명령을 실행할 수 있습니다.

그러나 각 컨테이너가 하나의 프로세스를 실행하는 시나리오를 추구하면서, 진지하게 당신이 MariaDB와 PHP7을 분리하는 스택을 구성하는 것을 추천합니다(나는 이것에 대해 PHP가 좋지 않다는 것을 알고 있습니다.먼저 MariaDB를 PHP에서 분리합니다 ;)

언급URL : https://stackoverflow.com/questions/47348571/docker-centos-mariadb-exit-status-0-expected

반응형