2017-04-09 70 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的解决方案。

即使如果我没有睡眠技巧,我也可以离开,我会更开心,主要是因为我想把制作命令留在作曲家身上。

相关问题