[我是不熟悉Docker和docker-compose
的新手,如果某些术语错误,我深表歉意。
我已经获得了Dockerfile
和docker-compose.yml
,并已成功构建了图像并启动并运行了容器(通过运行docker-compose up -d
),但是我想进行更新以使我的过程更容易一些偶尔我需要通过使用以下命令访问它来在容器(WordPress)上重新启动Apache:
docker exec -it 89a145b5ea3e /bin/bash
然后键入:
service apache2 restart
我的第一个问题是,我需要运行其他两项服务才能使项目正常运行,而当我运行上述
service apache2 restart
命令时,这些服务不会自动重新启动。
我需要运行的两个命令是:
service memcached start service cron start
我想知道如何在重新启动
apache2
时始终运行这些命令。
第二,我想配置我的Dockerfile
或docker-compose.yml
(不确定我应该在哪里添加它),以便在构建容器/图像时将这种行为导入到容器/图像中。
我已经设法通过将服务添加到我的Dockerfile
中来安装这些服务,但是无法弄清楚如何在重新启动容器时使这些服务运行。
以下是相关文件的内容:
Dockerfile:
FROM wordpress:5.1-php7.3-apache RUN yes | apt-get update -y \ && apt-get install -y vim \ && apt-get install -y net-tools \ && apt-get install -y memcached \ && apt-get install -y cron
docker-compse.yml
version: "3.3"
services:
db:
image: mysql:5.7
volumes:
- ./db_data:/var/lib/mysql:consistent
ports:
- "3303:3306"
restart: always
environment:
MYSQL_ROOT_PASSWORD: vagrant
MYSQL_DATABASE: wp_database
MYSQL_USER: root
MYSQL_PASSWORD: vagrant
wordpress:
container_name: my-site
build: .
depends_on:
- db
volumes:
- ./my-site-wp:/var/www/html/:consistent
ports:
- "8001:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: vagrant
WORDPRESS_DB_NAME: wp_database
volumes:
db_data:
my-site-wp:
我不熟悉Docker和docker-compose,因此如果我对某些术语有误,请您道歉。我已经提供了一个Dockerfile和docker-compose.yml,并且已经成功构建了映像...
对于撰写文件中的每个容器,您可以在yaml中添加运行命令标志,它将在容器启动后运行命令。这将在每次启动时运行。另一方面,Dockerfile中的命令仅在构建映像时运行。例如:
...有时我需要在容器(WordPress)上重新启动Apache ...
对于这种问题,我们可以使用CMD从Dockerfile本身处理