2017-04-09 16 views
1

私はbash iteractionのために "docker-compose run"で実行したい2つのコンテナを持っています。データベースへのリンクを持つAPIコンテナを初期化docker-compose run、以前実行していたコンテナへのリンク

docker-compose run --service-ports api bash 

を:私は

--- 
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" 

怒鳴るような私の作曲のファイルを見て。 そして、実行するにはnginxが必要で、APIにリンクする必要があります。まだできません。私はやっています:

私はこれらの2つのランを分離し、まだnginxのリンクを達成する方法がありますか?私はexternal_linkを試しましたが、それはそれをカットしませんでした。

+0

あなたが達成しようとしていることは不明です。どうして 'ドッカーの作成 'と別の'ドッカーの作った実行api bash'だけではないのですか? –

+0

私は実際に2つのbashをリンクしたいのです。なぜなら、開発目的(API上に1つ、他のコンテナに1つ、まだ作成されていない)に使用するからです。私はそれを動作させるためにモルモットとしてNGINXを使用していた(リンク部分) – FabioCosta

+0

さらに、nginxはリバースプロキシなので、nginxにはリバースプロキシを失敗させる – FabioCosta

答えて

1

回避方法が見つかりました。 私はネットワークを使って始めました(リンクはすべて同じですが、それはlegacyです)。

トリックは、私が眠ってからアクセスしたいコンテナを作り、ドッカーの作成execにアクセスしています。

1つの怒鳴るような私のファイルを見て:

--- 
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に解決策を見つけました。

私は睡眠のトリックなしに逃げることができたとしても、私は作者にプロダクションコマンドを残そうと思っていたので、私はもっと幸せだと思います。

関連する問題