docker-compose up正在启动容器并立即停止它们

问题描述 投票:4回答:2

我正在尝试使用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'

可以做些什么来解决这个问题。

docker docker-compose
2个回答
19
投票

如果您使用bash作为command,但没有终端,它将立即退出。这是因为当bash启动时,如果没有连接终端,并且它没有要执行的脚本或其他命令,则它无关,所以它退出(按设计)。

您可以使用不同的command,也可以使用tty: true附加终端作为此服务定义的一部分。

services:
  composetestdb:
    tty: true
    ...

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

谢谢,

© www.soinside.com 2019 - 2024. All rights reserved.