nginx - docker-compose run ,链接到之前运行的容器

标签 nginx docker docker-compose

我有 2 个容器,我想用“docker-compose run”运行 bash 迭代。我的 Composer 文件如下所示

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

有没有办法让我将这 2 次运行分开并仍然实现 nginx 链接。我尝试了 external_link 但这并没有削减它。

最佳答案

找到了解决方法。
我所做的是开始使用网络(链接可以正常工作,只是它们是 legacy )。

诀窍是让我想要访问的容器进入休眠状态,然后通过 访问它docker-compose 执行 .

我的文件如下所示:

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

关键是命令“sleep infinity”,所以我现在的工作流程是:
docker-compose up
docker-compose exec api bash

我在这个 issue 上找到了解决方案.

我认为这已经足够好了,即使我可以不使用 sleep 技巧我会更快乐,主要是因为我想将制作命令留给 Composer 。

关于nginx - docker-compose run ,链接到之前运行的容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43311741/

相关文章:

git - 您如何使用 bitbucket 服务器支持 'go get'?

docker - 更新了 windows docker,现在它在本地主机之外不起作用

c# - .net core with Docker Https 在不同端口映射时错误重定向

docker - 此处不允许yml docker-compose错误映射值

nginx - Express.js 使用虚拟路径重定向

django - Cross-Origin Request Blocked : The Same Origin Policy Disallows reading the remote resource. ..(原因:CORS 未成功)

DJango + nginx + gunicorn : how to stop caching

docker - 最近X个小时未使用的Docker修剪容器

postgresql - 用于持久化PostgreSQL数据库数据的Docker卷

mongodb - 无法连接到 Compass 中的复制集