我已经设置了一个Dockerfile来运行一个服务,该服务需要运行一些后续命令才能正确初始化。我创建了一个具有以下结构的启动脚本,并将其设置为我的切入点:
显然,这是不起作用的,因为服务是在后台启动的,入口点脚本将在代码0中退出。在完成配置之后,如何使这个容器继续运行呢?在不运行繁忙循环的情况下可以这样做吗?
发布于 2017-05-17 16:59:25
在完成配置之后,如何使这个容器继续运行呢?在不运行繁忙循环的情况下可以这样做吗?
在你们众多的选择中:
sleep inf
这样的东西,它不是一个繁忙的循环,也不占用CPU时间。supervisord
这样的流程管理器来启动服务和启动配置脚本。发布于 2018-08-24 16:25:46
您可以查看这个GitHub问题和特定的注释- https://github.com/docker-library/wordpress/issues/205#issuecomment-278319730。
总之,你可以做这样的事情:
version: '2.1'
services:
db:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
image: wordpress:latest
volumes:
- "./wp-init.sh:/usr/local/bin/apache2-custom.sh"
depends_on:
db:
condition: service_started
ports:
- 80:80
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
command:
- apache2-custom.sh
wp-init.sh
是您编写要执行的代码的地方。
注意command
yml标记:
command:
- apache2-custom.sh
因为我们在volumes
标记中限制了这两个代码,所以它实际上将在容器中运行wp-init.sh
中的代码。
https://stackoverflow.com/questions/44036592
复制