2017-07-27 128 views
0

我有一個基本docker-compose.yml文件的項目,然後2個文件 - 每個爲一個環境docker-compose.dev.ymldocker-compose.prod.ymlDocker撰寫刪除另一個容器

搬運工-compose.yml

version: "2" 

services: 
    app: 
     build: 
      context: . 
     depends_on: 
      - redis 
      - selenium 
     networks: 
      - richy 

    redis: 
     image: redis:3.2 
     container_name: redis 
     networks: 
      - richy 

    selenium: 
     image: selenium/standalone-chrome 
     container_name: selenium 
     networks: 
      - richy 

networks: 
    richy: 
     driver: bridge 

搬運工-compose.dev.yml

version: "2" 

services: 
    app: 
     build: 
      args: 
       env: dev 
     image: richy_image:dev-latest 
     container_name: richy-dev 
     volumes: 
      - .:/var/www/richy 
     ports: 
      - 9000:80 
     environment: 
      - ENV=dev 

搬運工-compose.prod.yml

version: "2" 

services: 
    app: 
     build: 
      args: 
       env: prod 
     image: richy_image:prod-latest 
     container_name: richy-prod 
     volumes: 
      - /home/grafa/workspace/prichy/richy/db.sqlite3:/var/www/richy/richy/db.sqlite3 
     ports: 
      - 9001:80 
     environment: 
      - ENV=prod 

我運行我的開發/產品環境,如docker-compose -f docker-compose.yml -f docker-compose.(dev|prod).yml up

事情是我不能在兩個容器並排運行,儘管我能夠做到這一點像一個月前和幾個變化前。每次我都跑例如開發環境,我產卵泊塢窗,譜寫了督促環境搬運工吐出了這一點:

redis is up-to-date 
selenium is up-to-date 
Recreating richy-dev 

這很奇怪,因爲它爲什麼要重新當我開始裏希的裏希-dev的容器-prod。

也許我的配置文件有衝突。你們能幫我嗎?

謝謝。

+0

看起來這可能是因爲這兩個服務被命名爲'app' – Serey

+0

謝謝。我會試一試並報告結果。 – grafa

回答

0

基本上要區分兩個環境的容器名稱,您需要明確定義項目名稱。否則它會根據文件夾名稱獲取名稱。

您可以使用-p或COMPOSE_PROJECT_NAME環境變量。

摘自:https://github.com/docker/compose/issues/2982#issuecomment-186835033

+1

謝謝。我用整個解決方案寫了一篇文章https://medium.com/@n1_/docker-and-your-development-a-production-environments-857067a9bfc0 – grafa

相關問題