简体   繁体   English

Docker 将依赖传递给 AWS Elastic Beanstalk

[英]Docker compose depedency pass to AWS Elastic Beanstalk

In Docker Compose to communicate between images is used name of service.在 Docker Compose 中,用于在图像之间进行通信的服务名称。 For example:例如:

  • In docker-compose.yml file should be defineddocker-compose.yml文件中应该定义
    depends_on:
            - database

This dependency can be used in:此依赖项可用于:

"server=database;uid=root;pwd=root;database=database"

Mainly name of defined services in docker-compose.yml file indicate hostname.主要是docker-compose.yml文件中定义的服务名称表示主机名。 I use AWS Elastic Beanstalk to deploy my microservices architecture to the cloud and when I run local run by Dockerrun.aws.json generated by container-transform this dependency is not available.我使用 AWS Elastic Beanstalk 将我的微服务架构部署到云中,当我运行由容器转换生成的 Dockerrun.aws.json 本地运行时,此依赖项不可用。

My question is.我的问题是。 Do I do some wrong?我做错了什么吗?

Does dependency like in Docker Compose available from WS Elastic Beanstalk? WS Elastic Beanstalk 是否提供 Docker Compose 中的依赖项?

In my real examples.在我的真实例子中。 Parts of docker-compose.yml docker-compose.yml的零件

    version: '3'

services:
  rabbitmq: # login guest:guest
    image: rabbitmq:3-management
    hostname: "rabbitmq"
    labels:
      NAME: "rabbitmq"
    ports:
    - "4369:4369"
    - "5671:5671"
    - "5672:5672"
    - "25672:25672"
    - "15671:15671"
    - "15672:15672"
  xms.accounts:
    image: ditrikss/accounts
    build: ./Microservices/Account/Xms
    restart: always
    ports:
      - 6001:80
    depends_on:
        - xdb.accounts
        - rabbitmq
    environment:
        - ASPNETCORE_ENVIRONMENT=Production
  xdb.accounts:
    image: mysql/mysql-server
    restart: always
    environment:
      MYSQL_DATABASE: 'xdb_accounts'
      MYSQL_USER: 'root'
      MYSQL_PASSWORD: 'root'
      MYSQL_ROOT_PASSWORD: 'root'
    ports:
      - '6002:3306'
    volumes:
      - "./Databases/Scripts/xdb_Accounts/Create/1_accounts.sql:/docker-entrypoint-initdb.d/1.sql"
      - "./Databases/Scripts/xdb_Accounts/Create/2_passwords.sql:/docker-entrypoint-initdb.d/2.sql"
      - "./Databases/Scripts/xdb_Accounts/Create/3_channel_features.sql:/docker-entrypoint-initdb.d/3.sql"
      - "./Databases/Scripts/xdb_Accounts/Create/4_streaming_features.sql:/docker-entrypoint-initdb.d/4.sql"

And reflecting code of Dockerrun.aws.json file并反映 Dockerrun.aws.json 文件的代码

{
"AWSEBDockerrunVersion": "2",
"containerDefinitions": [
    {
        "dockerLabels": {
            "NAME": "rabbitmq"
        },
        "essential": true,
        "image": "rabbitmq:3-management",
        "name": "rabbitmq",
        "portMappings": [
            {
                "containerPort": 4369,
                "hostPort": 4369
            },
            {
                "containerPort": 5671,
                "hostPort": 5671
            },
            {
                "containerPort": 5672,
                "hostPort": 5672
            },
            {
                "containerPort": 25672,
                "hostPort": 25672
            },
            {
                "containerPort": 15671,
                "hostPort": 15671
            },
            {
                "containerPort": 15672,
                "hostPort": 15672
            }
        ]
    }
    {
        "environment": [
            {
                "name": "MYSQL_DATABASE",
                "value": "xdb_accounts"
            },
            {
                "name": "MYSQL_USER",
                "value": "root"
            },
            {
                "name": "MYSQL_PASSWORD",
                "value": "root"
            },
            {
                "name": "MYSQL_ROOT_PASSWORD",
                "value": "root"
            }
        ],
        "essential": true,
        "image": "mysql/mysql-server",
        "mountPoints": [
            {
                "containerPath": "/docker-entrypoint-initdb.d/1.sql",
                "sourceVolume": "_DatabasesScriptsXdb_AccountsCreate1_Accounts_Sql"
            },
            {
                "containerPath": "/docker-entrypoint-initdb.d/2.sql",
                "sourceVolume": "_DatabasesScriptsXdb_AccountsCreate2_Passwords_Sql"
            },
            {
                "containerPath": "/docker-entrypoint-initdb.d/3.sql",
                "sourceVolume": "_DatabasesScriptsXdb_AccountsCreate3_Channel_Features_Sql"
            },
            {
                "containerPath": "/docker-entrypoint-initdb.d/4.sql",
                "sourceVolume": "_DatabasesScriptsXdb_AccountsCreate4_Streaming_Features_Sql"
            }
        ],
        "name": "xdb.accounts",
        "portMappings": [
            {
                "containerPort": 3306,
                "hostPort": 6002
            }
        ]
    },
    {
        "environment": [
            {
                "name": "ASPNETCORE_ENVIRONMENT",
                "value": "Production"
            }
        ],
        "essential": true,
        "image": "ditrikss/accounts",
        "name": "xms.accounts",
        "portMappings": [
            {
                "containerPort": 80,
                "hostPort": 6001
            }
        ]
    }
]

} }

Thanks in advance!提前致谢!

According to Dockerrun.aws.json v2 reference , you should add links section in your Dockerrun.aws.json file:根据Dockerrun.aws.json v2 参考,您应该在Dockerrun.aws.json文件中添加links部分:

Definition of links :链接的定义:

List of containers to link to.要链接到的容器列表。 Linked containers can discover each other and communicate securely.链接的容器可以相互发现并安全通信。

Example usage:示例用法:

{
    "name": "nginx-proxy",
    "image": "nginx",
    "essential": true,
    "memory": 128,
    "portMappings": [{
        "hostPort": 80,
        "containerPort": 80
    }],
    "links": [
        "php-app"
    ],
    "mountPoints": [
        {
          "sourceVolume": "php-app",
          "containerPath": "/var/www/html",
          "readOnly": true
        }
    ]
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM