gpt4 book ai didi

mysql - docker : Start mysql and apache from entrypoint or CMD

转载 作者:太空宇宙 更新时间:2023-11-03 11:38:58 24 4
gpt4 key购买 nike

构建一个用于开发的docker镜像,我想在运行镜像时自动启动mysql和apache。

如果我登录到容器并运行“service apache2 start”和“service mysql start”,它就会工作。但是,如果我输入入口点或 CMD,它就会失败。我可以通过输入 ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"] 来启动 apache,但我无法以编程方式启动 mysql。

我尝试了很多很多东西。大多数情况下,如果容器未运行而静默失败,其他时候我会得到:docker:来自守护进程的错误响应:oci 运行时错误:container_linux.go:247:启动容器进程导致“exec:\”/etc/init .d/mysql start\": stat/etc/init.d/mysql start: 没有那个文件或目录"

这是我目前所拥有的:

FROM debian:wheezy

RUN apt-get update && \
apt-get install -y libmcrypt-dev \
subversion ssl-cert nano wget unzip && \
echo "deb http://packages.dotdeb.org wheezy-php56 all" >> /etc/apt/sources.list.d/dotdeb.list && \
echo "deb-src http://packages.dotdeb.org wheezy-php56 all" >> /etc/apt/sources.list.d/dotdeb.list && \
wget http://www.dotdeb.org/dotdeb.gpg -O- | apt-key add - && \
echo mysql-server-5.5 mysql-server/root_password password yourpass | debconf-set-selections && \
echo mysql-server-5.5 mysql-server/root_password_again password yourpass | debconf-set-selections && \
apt-get update && \
apt-get install -y \
apache2 apache2-doc apache2-mpm-prefork apache2-utils apache2.2-bin apache2.2-common libapache2-mod-php5 \
openssl php-pear php5 php5-cli php5-common php5-curl php5-gd php5-mcrypt php5-mysql php5-memcache php5-readline \
subversion ssl-cert nano wget unzip \
mysql-server-5.5 mysql-client mysql-client-5.5 mysql-common && \
/etc/init.d/mysql start && \
mysql -u root -pyourpass -e "create database mydb;" && \
rm -rf /var/lib/apt/lists/* && \
rm /etc/apache2/sites-enabled/000-default && \
mkdir -p /var/www/html && \
chown www-data:www-data -R /var/www/html/

COPY conf/etc/ /etc/
COPY mydump.sql /var/www/html/mydump.sql

RUN /etc/init.d/mysql start && \
mysql -u root -pyourpass -h localhost mydb < /var/www/html/mydump.sql && \
rm /var/www/html/mydump.sql

VOLUME ["/var/www", "/var/log/apache2", "/etc/apache2", "/var/lib/mysql"]

EXPOSE 80 443 3306

最佳答案

我觉得你启动 Apache 或 Mysql 的方式不对

如果我在 hub.docker.com 上查看最受欢迎的 Apache Dockerfile 显示了如何启动 Apache。 Dockerfile 的最后一行是

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

引用Mysql,最后一行Dockerfile

CMD ["mysqld"]

所以你可以看看supervisor或任何其他类似工具,如 S6daemontools为了以 Docker 方式同时启动 Apache 和 Mysql。

关于mysql - docker : Start mysql and apache from entrypoint or CMD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43483885/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com