amazon-web-services - docker 中的同一应用程序构成了映射AWS EC2实例上不同端口的配置

标签 amazon-web-services docker amazon-ec2 docker-compose

该应用程序具有以下容器

  • php-fpm
  • nginx
  • 本地mysql
  • 应用程序的API
  • datadog容器

  • 在开发过程中,会创建许多功能分支以添加新功能。如
  • 应用程序功能1
  • 应用程序功能2
  • 应用程序功能3
  • ...

  • 我每个运行Docker引擎V.18的功能分支都有一个AWS EC2实例,而docker compose用来构建并运行组成php应用程序的docker堆栈。

    为了节省运营成本,一个AWS EC2实例可以同时具有3个功能分支。我当时在想,每个功能分支都应该有一个自定义的docker-compose和特殊的端口映射和docker image标签。

    此配置的目标是能够测试3个功能分支并通过不同的端口访问该应用程序,同时节省资金。

    我还考虑过通过保留相同端口并使用nginx将流量重定向到不同的docker网络端口来使用 docker network

    您有什么建议?

    最佳答案

    在这种情况下,我能想到的一种简单的方法是将.env文件用于docker-compose。

    docker-compose.yaml 文件将如下所示

    ...
    
    ports:
     - ${NGINX_PORT}:80
    
    ...
    
    ports:
     - ${API_PORT}:80
    
    

    每个堆栈的 .env 文件将如下所示
    NGINX_PORT=30000
    API_PORT=30001
    


    NGINX_PORT=30100
    API_PORT=30101
    

    用于不同的项目。

    注意:
  • .env必须与docker-compose.yaml位于同一文件夹中。
  • 确保.env文件内的所有端口都不会相互冲突。您可以使用某种约定,例如为feature1之类的功能添加前缀,其端口将以301开头,即301xx
  • 这样,您的docker-compose.yaml可以像您想要的一样通用。
  • 关于amazon-web-services - docker 中的同一应用程序构成了映射AWS EC2实例上不同端口的配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59961483/

    相关文章:

    python - 使用 Python 关闭没有特定标签的 EC2 实例

    linux - 在 AWS linux AMI 上使用 sudo rm -rf 意外删除了目录

    amazon-web-services - 我最终为 AWS 现货实例支付的价格是多少?我是否会抬高价格?

    Docker 构建参数

    docker - Alpine Docker 错误 : Unable to lock database: Permission denied ERROR: Failed to open apk database: Permission denied

    amazon-ec2 - Celery、Resque 或用于在我的云中的机器上处理作业的自定义解决方案?

    amazon-web-services - 如何在 Amazon AWS S3 存储桶中找到未加密的文件?

    amazon-web-services - 如何在CloudFormation中生成AWS根账户ARN?

    amazon-web-services - 由于 VACUUM 查询,Amazon Redshift 的磁盘使用率为 100%

    bash - 2013: “Lost connection to MySQL server at '握手:读取初始通信数据包',尝试连接时系统错误:115”