首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >避免docker-compose.yml配置之间的端口冲突?

避免docker-compose.yml配置之间的端口冲突?
EN

Stack Overflow用户
提问于 2016-10-06 17:39:31
回答 1查看 3.7K关注 0票数 4

我正在使用Docker for Mac,在独立的存储库中有3个不同的“微服务”,它们都有自己的docker-compose.yml文件。这些服务本身并不在docker中运行,而是有一个docker-compose.yml文件,用于调出每个服务使用的数据库(例如postgresql、minio和redis)。这使得我可以很容易地单独处理这些服务。

然而,由于端口冲突,很难同时进行两个服务的cd service1 && docker-compose up -d && cd service2 && docker-compose up -d。例如,如果service1启动PostgreSQL并将其暴露给端口5432,而service2想要执行相同的操作,则第二个docker-compose up命令将失败。

这两个服务共享相同的PosgtreSQL容器是可以接受的,但我不确定是否可以告诉docker-compose“如果数据库可用,使用service1中的数据库,或者创建一个新容器”。

另一种解决方案是确保每个服务都有一个唯一的端口,但随着越来越多的docker-compose堆栈在使用,这可能很难跟踪。

任何关于管理这类工作流程的建议都将不胜感激。

如果有帮助,下面是我的docker-compose.yml文件之一的样子:

代码语言:javascript
复制
minio:
  image: minio/minio
  ports:
    - "9000:9000"
  volumes:
    - ./test/.minio/data:/export
    - ./test/.minio/config:/root/.minio
  environment:
    - "MINIO_ACCESS_KEY=AKIAIOSFODNN7EXAMPLE"
    - "MINIO_SECRET_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
    - "MINIO_ENABLE_FSMETA=true"

createbucket:
  image: garland/aws-cli-docker
  links:
    - minio
  command: >
    /bin/sh -c "
      while ! wget -q -s http://minio:9000/minio/login; do sleep 1; done;
      aws configure set default.s3.signature_version s3v4;
      aws configure set default.region us-east-1;
      aws s3api create-bucket \
        --bucket service1-test \
        --endpoint-url=http://minio:9000;
      exit 0;
    "
  environment:
    - "AWS_ACCESS_KEY_ID=AKIAIOSFODNN7EXAMPLE"
    - "AWS_SECRET_ACCESS_KEY=wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"

db:
  image: postgres:9.5
  ports:
    - "5432:5432"

createdb:
  image: postgres:9.5
  links:
    - db
  command: >
    /bin/bash -c "
      while ! psql --host=db --username=postgres; do sleep 1; done;
      psql --host=db --username=postgres -c 'CREATE DATABASE \"service1-test\";';
    "

services:
  image: alpine:3.2
  links:
    - db
    - minio
  command: /bin/true

我用下面的命令打开它:docker-compose up createdb && docker-compose up createbucket && docker-compose up -d services

EN

回答 1

Stack Overflow用户

发布于 2016-10-07 04:16:14

这看起来像是你会用the extends directive来做的事情。这将意味着创建第四个将您的服务绑定在一起的docker-compose.yml文件,您也可以在其中重新定义共享服务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39892588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档