我希望在docker mysql
中关联AWS Mysql RDS
,而不是yml file
容器数据库链接。有可能吗?
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"
答案 0 :(得分:2)
您可以通过以下几种方式从docker-compose.yml
链接到AWS RDS MySQL实例。
第一种也许最简单的方法是在需要访问RDS MySQL实例的容器上设置环境变量。例如,您可以将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/
然后,您可以更新该服务中的配置,以从环境中读取数据库连接详细信息,例如${MYSQL_HOST}
。
这种方法的明显缺点是您在docker-compose.yml中将连接详细信息存储为纯文本,这不是很好,但根据您的要求可能是可接受的。
第二种方法(也是我倾向于支持的方法)是将数据库配置绑定到正在运行的容器中。
大多数应用程序支持从属性文件中读取数据库连接详细信息。举个例子:假设在启动时你的应用程序从/config/database.properties
读取并需要以下属性来连接数据库:
config.db.host=your-mysql-cname.rds.amazon.com
config.db.user=foo
config.db.password=bar
我会设置我的环境,以便在运行时,我bind mount一个属性文件,为容器提供所有必需的值:
OperationEngine:
volumes:
- /secure/config/database.properties:/config/database.properties
/secure/config
目录是Docker主机上文件系统的一部分。如何创建和填充该目录是最新的。通常我通过让我的环境设置脚本创建目录然后将私有Git存储库克隆到包含该环境的正确配置的此目录来实现此目的。当然,只有具有所需权限级别的用户才能查看包含敏感配置详细信息的Git存储库,即生产系统。
希望有所帮助。
答案 1 :(得分:-1)
不,我没有在我的yml文件中创建网络。下面是我的yml文件的整个内容,所以需要进行哪些更改?
mysql_db: image:mysql:5.6 container_name:shishir_db 环境: MYSQL_ROOT_PASSWORD:" xxxxxxxx" #MYSQL_USER:" shishir" #MYSQL_DATABASE:" shishir1" MYSQL_PASSWORD:" xxxxxxxx" 端口: - " 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/