作者:cb | 来源:互联网 | 2022-12-04 19:14
我知道这个问题在各种情况下都会被问到,但是尽管我在互联网上阅读了所有内容,但我仍然很困惑。
我想在构建容器“ mywebsite”之后执行脚本,并且为此使用了脚本ENTRYPOINT
,我知道在正常使用中,ENTRYPOINT
执行命令后,容器“ mywebsite”退出。不幸的是,我尝试了几种技巧来避免退出,但没有成功。
在我的 DOCKERFILE
有这个:
FROM php:7.1.17-apache
[...]
WORKDIR /var/www
COPY docker-entrypoint.sh /var/www/docker-entrypoint.sh
ENTRYPOINT ["sh", "/var/www/docker-entrypoint.sh"]
然后在我的docker-entrypoint.sh中,我有这个:
#!/bin/bash
set -e
cd www
chown -R www-data:www-data sites modules themes
exec "$@"
这是我的docker-compose.yml:
version: '3.3'
services:
mywebsite:
build: .
extra_hosts:
- "mywebsite.local:127.0.0.1"
hostname: mywebsite
domainname: local
ports:
- 8088:80
volumes:
- ./www:/var/www/www
- ./vendor:/var/www/vendor
- ./scripts:/var/www/scripts
links:
- database:database
restart: always
tty: true
database:
image: mysql:5.5.49
container_name: mysql-container
ports:
- 3307:3306
volumes:
- ./www/dumps/mywebsite.sql:/docker-entrypoint-initdb.d/dump.sql
restart: always
command: --max_allowed_packet=32505856
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mywebsite
构建时,所有步骤都很好,并且所有设置都正确,但是容器“ mywebsite”不断退出。(“数据库”服务运行良好)
我曾有过tty: true
,exec "$@"
但这些都不起作用。
1> 小智..:
您可以使用以下命令结束 tail -f /dev/null
我经常在docker-compose.yml中直接使用command: tail -f /dev/null
。很容易看出我如何保持容器运行。