docker-compose无法运行两个容器

Luk*_*ski 2 docker docker-compose

这是我的设置:

两个不同的docker图像用于开发,一个用于测试.以及使用这些图像的两个不同的docker-compose文件

码头图片

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
Run Code Online (Sandbox Code Playgroud)

作曲家development.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
Run Code Online (Sandbox Code Playgroud)

作曲家testing.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
Run Code Online (Sandbox Code Playgroud)

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

例:

仅运行开发容器.

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
Run Code Online (Sandbox Code Playgroud)

仅运行测试容器.

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
Run Code Online (Sandbox Code Playgroud)

问题:

当我尝试同时运行两个容器时问题就开始了.也就是说,开发容器已经由docker-compose -f composer-development.yml up -d触发.现在我开始我的测试容器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
Run Code Online (Sandbox Code Playgroud)

不知何故,docker-compose决定重新创建并停止开发容器 - 只留下测试容器.我所期望的是,有两个容器同时运行(开发和测试容器)我只有测试容器!

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
Run Code Online (Sandbox Code Playgroud)

问题:

为什么我不能同时运行这两个容器?为什么开始测试容器停止开发容器?如何并行运行这两个容器?

BMi*_*tch 8

您可以将其视为同一项目,因为您从同一目录运行并且未定义项目.所以它使当前项目看起来像你最后给出的compose文件.

要并行运行,请运行它们:

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

docker-compose -f composer-testing.yml -p test up -d
Run Code Online (Sandbox Code Playgroud)