如何链接docker-compose.yml文件中的MySQL RDS?

而不是下面的mysql容器数据库链接,我想链接在docker yml file AWS Mysql RDS 。 可能吗?

  mysql_db: image: mysql:5.6 container_name: shishir_db environment: MYSQL_ROOT_PASSWORD: "xxxxxxxx" #MYSQL_USER: "shishir" #MYSQL_DATABASE: "shishir1" MYSQL_PASSWORD: "xxxxxxxx" ports: - "3306:3306" 

有几种方法可以从docker-compose.yml链接到AWS RDS MySQL实例。

第一种也许是最简单的方法是在需要访问RDS MySQL实例的容器上设置环境variables。 举例来说,您可以将您的OperationEngine服务定义更新为如下所示:

 OperationEngine: image: shishir/operationengine:${RELEASE_OTA_VERSION} container_name: operation_engine ports: - "8080:8080" environment: - DOCKER_HOST_IP: ${DOCKER_HOST_IP} - JAVA_OPTS: ${JAVA_OPTS} - MYSQL_HOST: "your-mysql-cname.rds.amazon.com" - MYSQL_USER: "username" - MYSQL_PASSWORD: "password" volumes: - ${HOME}/operationengine/logs/:/usr/local/tomcat/logs/ 

然后,您可以更新该服务中的configuration,从环境中读取数据库连接详细信息,例如${MYSQL_HOST}

这种方法的一个明显的缺点就是你的docker-compose.yml文件中有连接细节信息以纯文本的forms存储,这并不是很好,但根据你的需求可能是可以接受的。

第二种方法(以及我倾向于支持的方法)是将数据库configuration挂载到正在运行的容器中。

大多数应用程序支持从属性文件读取数据库连接的详细信 举一个例子:假设在启动时你的应用程序从/config/database.properties读取,并要求下列属性连接到数据库:

 config.db.host=your-mysql-cname.rds.amazon.com config.db.user=foo config.db.password=bar 

我将设置我的环境,以便在运行时绑定一个属性文件,它将所有必需的值提供给容器:

 OperationEngine: volumes: - /secure/config/database.properties:/config/database.properties 

/secure/config目录是Docker主机上文件系统的一部分。 如何创build和填充该目录是最新的。 通常情况下,我通过让环境设置脚本创build目录,然后将私有Git存储库克隆到包含该环境的正确configuration的目录中来解决这个问题。 当然,只有具有所需权限级别的用户才能查看包含敏感configuration详细信息(即生产系统)的Git存储库。

希望有所帮助。

不,我没有在我的XML文件中创buildnetworking。 以下是我的XML文件的全部内容,所以需要做什么修改?

mysql_db:image:mysql:5.6 container_name:shishir_db environment:MYSQL_ROOT_PASSWORD:“xxxxxxxx”#MYSQL_USER:“shishir”#MYSQL_DATABASE:“shishir1”MYSQL_PASSWORD:“xxxxxxxx”ports: – “3306:3306”

 zookeeper: image: wurstmeister/zookeeper container_name: zookeeper ports: - "2181:2181" kafka: image: shishir/kafkaengine:0.10 container_name: kafka links: - zookeeper ports: - "9092:9092" environment: KAFKA_ADVERTISED_HOST_NAME: ${DOCKER_HOST_IP} KAFKA_ZOOKEEPER_CONNECT: ${DOCKER_HOST_IP}:2181 KAFKA_ADVERTISED_PORT: 9092 KAFKA_CREATE_TOPICS: ${KAFKA_TOPICS} KAFKA_ZOOKEEPER_SESSION_TIMEOUT_MS: 12000 KAFKA_ZOOKEEPER_CONNECTION_TIMEOUT_MS: 12000 flywaydb: image: shishir/flywaydb container_name: flywaydb links: - mysql_db OperationEngine: image: shishir/operationengine:${RELEASE_OTA_VERSION} container_name: operation_engine links: - mysql_db ports: - "8080:8080" environment: DOCKER_HOST_IP: ${DOCKER_HOST_IP} JAVA_OPTS: ${JAVA_OPTS} volumes: - ${HOME}/operationengine/logs/:/usr/local/tomcat/logs/