gpt4 book ai didi

docker - 启动后台 apache/mysql docker 容器的奇怪方式

转载 作者:行者123 更新时间:2023-12-01 15:19:49 24 4
gpt4 key购买 nike

我为 docker 下载了一个 debian 镜像,并从中创建了一个容器。我已经在这个容器上成功安装了 apache 和 mysql(来自/bin/bash)。

我想让这个 docker 容器在后台运行。

我已经尝试了很多教程(我已经使用 Dockerfile 创建了图像)但没有任何效果。 Apache 和 mysql 以 root 身份运行...

所以我启动了这个命令:

     docker run -d -p 80:80 myimagefile /bin/bash -c "while true; do sleep 10; done"

然后我用 exec 命令附加了一个/bin/bash,然后我手动启动了 mysql 和 apache2(/etc/init.d/脚本)。当我键入 CTRL-D 时,bash 被终止,但容器仍在后台,mysql 和 apache 仍然存在!

我想知道这个方法是正确的还是丑陋的?有没有最好的方法来做到这一点?我不想编写描述如何安装 apache 和 mysql 的 Dockerfile。我用我的申请和所有先决条件制作了自己的形象。我只想从我的镜像启动一个容器并自动启动 apache 和 mysql。

我有第二个问题:使用我的方法,如果我重新启动物理计算机,容器不会重新加载。我如何通过数据持久化自动启动它?

谢谢

最佳答案

我建议在单独的容器中运行 mysql 和 apache。此外,docker hub 已经有了可以重复使用的容器镜像:

以下是 docker-compose 的示例描述如何启动 Drupal 的文件

version: '2'
services:
db:
image: mysql
environment:
- MYSQL_ROOT_PASSWORD=letmein
- MYSQL_DATABASE=drupal
- MYSQL_USER=drupal
- MYSQL_PASSWORD=drupal
volumes:
- /var/lib/mysql
web:
image: drupal
depends_on:
- db
ports:
- "8080:80"
volumes:
- /var/www/html/sites
- /var/www/private

运行如下

$ docker-compose up -d
Creating dockercompose_db_1
Creating dockercompose_web_1

它在端口 8080 上公开 Drupal

$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------------------
dockercompose_db_1 docker-entrypoint.sh mysqld Up 3306/tcp
dockercompose_web_1 apache2-foreground Up 0.0.0.0:8080->80/tcp

注意:

  • 运行 drupal 安装程序时,将其配置为连接到名为“db”的主机,这是 mysql 容器。

关于docker - 启动后台 apache/mysql docker 容器的奇怪方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39666545/

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