如何链接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/