2017-04-09 89 views
1

我有2個容器,我想用「docker-compose run」運行bash iteraction。我的作曲文件看起來像一個波紋管docker-compose運行,鏈接到以前運行的容器

--- 
services: 
    dataBase: 
    image: "mysql:latest" 
    container_name: dataBase 
    environment: 
     MYSQL_ROOT_PASSWORD: SOME_PASSWORD 
     MYSQL_DATABASE: SOME_DATABASE 
    ports: 
     - "3306:3306" 
    volumes: 
     - ../data:/var/lib/mysql 
    api: 
    build: builds/web 
    container_name: api 
    hostname: "api" 
    ports: 
     - "5000:5000" 
    external_links: 
     - dataBase 
    volumes: 
     - ../api:/etc/api 
    working_dir: /etc/api 
    command: npm start 
    nginx: 
    image: nginx:1.11.13-alpine 
    ports: 
     - "8080:80" 
    volumes: 
     - ../nginx/conf.d:/etc/nginx/conf.d/ 
    external_links: 
     - api:api 
    restart: always 
version: "3" 

我做的:

docker-compose run --service-ports api bash 

初始化與鏈接到數據庫的API容器。 然後我需要nginx運行並鏈接到API,我還沒有做到這一點。我在做:

docker-compose run -d --service-ports --no-deps nginx 

有沒有辦法讓我分開這兩個運行並仍然實現nginx鏈接。我嘗試了external_link,但沒有切斷它。

+0

目前還不清楚你正在努力完成什麼。爲什麼不只是'docker-compose up'和一個單獨的'docker-compose run api bash'? –

+0

我實際上想要連接2個bash,因爲我將用於開發目的(一個用於api,另一個用於其他容器,仍未創建)。我使用NGINX作爲豚鼠使其工作(鏈接部分) – FabioCosta

+0

此外,nginx是一個反向代理,所以如果我運行API,nginx將不會有鏈接到它導致反向代理失敗 – FabioCosta

回答

1

找到解決辦法。 我所做的是開始使用網絡(鏈接將工作都是一樣的只是他們是legacy)。

訣竅是使容器我想進入睡眠,然後通過docker-compose exec

我的文件看起來像一個波紋管:

--- 
services: 
    dataBase: 
    image: "mysql:latest" 
    container_name: dataBase 
    environment: 
     MYSQL_ROOT_PASSWORD: SOME_PASSWORD 
     MYSQL_DATABASE: SOME_DATABASE 
    volumes: 
     - ../data:/var/lib/mysql 
    networks: 
     - proxy 
    api: 
    build: builds/web 
    container_name: api 
    hostname: api 
    ports: 
     - "5000:5000" 
    depends_on: 
     - dataBase 
    volumes: 
     - ../api:/etc/api 
    working_dir: /etc/api 
    networks: 
     - proxy 
    command: "sleep infinity" #keeps the container alive for 2 way networking to work, test is ran with docker-compose exec 
    nginx: 
    image: nginx:1.11.13-alpine 
    container_name: nginx 
    hostname: nginx 
    ports: 
     - "8080:80" 
    volumes: 
    - ../nginx/conf.d:/etc/nginx/conf.d/ 
    restart: always 
    depends_on: 
     - api 
    networks: 
     - proxy 
networks: 
    proxy: 
    driver: bridge 
version: "3" 

美中不足的是命令「睡眠無窮大」,所以我現在的工作流程是:

docker-compose up 
docker-compose exec api bash 

我發現這個issue的解決方案。

即使如果我沒有睡眠技巧,我也可以離開,我會更開心,主要是因爲我想把製作命令留在作曲家身上。

相關問題