我正在尝试使用docker-compose构建服务,但是当compose脚本结束时,使用docker-compose启动的容器会立即停止。但是,当我使用docker run为相同的服务映像创建容器时,它正在工作。
这是我的撰写剧本:
version: '2.1'
networks:
composetestnetwork:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.19.0.0/16
gateway: 172.19.0.1
services:
composetestdb:
build:
context: .
dockerfile: Dockerfile-testdb
cap_add:
- ALL
container_name: my-db-compose-container
labels:
db.description: "This is a test db"
volumes:
- c:/Users:/data
networks:
composetestnetwork:
ipv4_address: 172.19.0.5
ports:
- "3306:3306"
command: 'bash'
可以采取哪些措施来解决这个问题。
答案 0 :(得分:18)
如果您使用bash
作为command
,但没有终端,则会立即退出。这是因为当bash启动时,如果没有连接终端,并且它没有要执行的脚本或其他命令,则它无关,所以它退出(按设计)。
您可以使用其他command
,也可以使用tty: true
附加终端作为此服务定义的一部分。
services:
composetestdb:
tty: true
...
答案 1 :(得分:0)
我有同样的问题,但是tty : true
不能为我解决问题。
这是我的docker-compose文件:
---
version: "3"
services :
data:
container_name: data
environment:
- MYSQL_ROOT_PASSWORD=0283
image: mysql:5.7
restart: always
volumes:
- "./database:/var/lib/mysql"
ports:
- "3306:3306"
mail:
container_name: mail
image: djfarrelly/maildev
ports:
- "1080:80"
- "1025:25"
web:
container_name: web
image: "web:php7.1a"
links:
- mail
- data
ports:
- "80:80"
volumes:
- "./www:/var/www/html"
working_dir : /var/www/html
tty: true
command:
echo "test"
#bash -c "php composer.phar self-update"
command
之后,Docker返回我:“容器已退出(0)”
如果我对这些行发表评论,则容器会正常运行。
Windows 10 Pro
Docker version 18.09.2, build 6247962
Docker-compose version 1.23.2, build 1110ad01
谢谢