docker-compose不能运行两个容器

这是我的设置:

两个不同的docker图像一个用于开发 ,一个用于testing 。 和两个不同的docker合成文件,利用这些图像

docker的图像

lukas@E7450:~$ docker images cbs/compare-dev webapp 79ace960ede7 About an hour ago 852.8 MB cbs/compare-test webapp 10da03e3922b About an hour ago 846.2 MB 

composer phpdevelopment.yml

 version: '2' services: redis: restart: always image: redis container_name: compare_dev_redis links: - webapp volumes: - /home/data/compare/development/database/redis:/data volumes_from: - webapp command: redis-server /srv/www/compare/htdocs/config/services/compare.redis.conf varnish: restart: always image: ldynia/varnish container_name: compare_dev_varnish links: - webapp volumes: - ./scripts/startup_varnish.sh:/etc/varnish/startup_varnish.sh volumes_from: - webapp environment: CACHE_SIZE: 256m VCL_PORT: 8080 VCL_CONFIG: /srv/www/compare/htdocs/config/services/compare.varnish.development.vcl command: bash startup_varnish.sh database: restart: always image: postgres:9.5.3 container_name: compare_dev_postgres environment: ENVIRONMENT: developement POSTGRES_DB: compare_development POSTGRES_USER: developer POSTGRES_PASSWORD: developer volumes: - /home/data/compare/development/database/postgres:/var/lib/postgresql/data webapp: restart: always depends_on: - database image: cbs/compare-dev:webapp container_name: compare_dev_webapp build: docker/development ports: - "22:22" - "80:80" - "443:443" - "8080:8080" volumes: - .:/srv/www/compare/htdocs - ./storage:/srv/www/compare/htdocs/storage environment: HTTP_PORT: 80 HOST: compare.dev command: bash scripts/startup_app.sh 

composer phptesting.yml

 version: '2' services: redis: image: redis container_name: compare_test_redis links: - webapp volumes: - /home/data/compare/testing/database/redis:/data volumes_from: - webapp command: redis-server /srv/www/compare/htdocs/config/services/compare.redis.conf varnish: image: ldynia/varnish container_name: compare_test_varnish links: - webapp volumes: - ./scripts/startup_varnish.sh:/etc/varnish/startup_varnish.sh volumes_from: - webapp environment: CACHE_SIZE: 256m VCL_PORT: 9090 VCL_CONFIG: /srv/www/compare/htdocs/config/services/compare.varnish.production.vcl command: bash startup_varnish.sh database: image: postgres:9.5.3 container_name: compare_test_postgres environment: ENVIRONMENT: production POSTGRES_DB: compare_testing #POSTGRES_USER: !!! CHANGE ME !!! #POSTGRES_PASSWORD: !!! CHANGE ME !!! volumes: - /home/data/compare/testing/database/postgres:/var/lib/postgresql/data webapp: depends_on: - database image: cbs/compare-test:webapp container_name: compare_test_webapp build: docker/testing ports: - "555:443" - "9000:80" volumes: - .:/srv/www/compare/htdocs - ./storage:/srv/www/compare/htdocs/storage - /etc/ssl/private/servercerts:/etc/ssl/private/servercerts environment: HTTP_PORT: 555 HOST: compare.cbs.dtu.dk command: bash scripts/startup_app.sh 

当我使用单个撰写文件时,一切正常。

例:

只运行开发容器。

 lukas@E7450:~$ docker-compose -f composer-development.yml up -d lukas@E7450:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES cb3840ae6e8d ldynia/varnish "bash startup_varnish" 40 seconds ago Up 40 seconds compare_dev_varnish 980a90cf8177 redis "docker-entrypoint.sh" 42 seconds ago Up 42 seconds 6379/tcp compare_dev_redis 8c4ed8c08705 cbs/compare-dev:webapp "bash scripts/startup" 45 seconds ago Up 44 seconds 0.0.0.0:22->22/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8080->8080/tcp compare_dev_webapp 9e7fca1a63ce postgres:9.5.3 "/docker-entrypoint.s" 11 seconds ago Up 11 seconds 5432/tcp compare_dev_postgres 

只运行testing容器。

 lukas@E7450:~$ docker-compose -f composer-testing.yml up -d lukas@E7450:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8df766e350d4 redis "docker-entrypoint.sh" 11 seconds ago Up 9 seconds 6379/tcp compare_test_redis 0174348650e7 ldynia/varnish "bash startup_varnish" 11 seconds ago Up 10 seconds compare_test_varnish 17c6838d378c cbs/compare-test:webapp "bash scripts/startup" 11 seconds ago Up 10 seconds 0.0.0.0:9000->80/tcp, 0.0.0.0:555->443/tcp compare_test_webapp 9f78d61a19f8 postgres:9.5.3 "/docker-entrypoint.s" 11 seconds ago Up 11 seconds 5432/tcp compare_test_postgres 

问题:

当我尝试同时运行两个容器时,问题就开始了。 也就是说, 开发容器已经由docker-compose -f composer-development.yml up -d触发 。 现在我启动我的testing容器docker-compose -f composer-testing.yml up -d ,这就是发生了什么事情。

 lukas@E7450: docker-compose -f composer-testing.yml up Recreating compare_dev_postgres Recreating compare_dev_webapp Recreating compare_dev_redis Recreating compare_dev_varnish Attaching to compare_test_postgres, compare_test_webapp, compare_test_varnish, compare_test_redis 

不知何故,docker构成决定重新创build和停止开发容器 – 只有testing容器才能使我放弃。 我期望的是有两个容器同时运行(开发和testing容器)我只有testing容器!

 ludd@E7450:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f66b54032ca2 ldynia/varnish "bash startup_varnish" 8 minutes ago Up 2 minutes compare_test_varnish 83626ac27c32 redis "docker-entrypoint.sh" 8 minutes ago Up 2 minutes 6379/tcp compare_test_redis 97ad2f330272 cbs/compare-test:webapp "bash scripts/startup" 8 minutes ago Up 2 minutes 0.0.0.0:9000->80/tcp, 0.0.0.0:555->443/tcp compare_test_webapp 4f174819744d postgres:9.5.3 "/docker-entrypoint.s" 8 minutes ago Up 2 minutes 5432/tcp compare_test_postgres 

问题:

为什么我不能同时运行这两个容器? 为什么开始testing容器停止开发容器? 我怎样才能平行运行这两个容器?

你可以把这个视为同一个项目,因为你是从同一个目录运行的,而不是定义一个项目。 所以它使得当前的项目看起来就像你最后给它的组合文件。

要并行运行,请像下面这样运行它们:

 docker-compose -f composer-development.yml -p dev up -d docker-compose -f composer-testing.yml -p test up -d