您可以有几种方法从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
我会设置我的环境,以便在运行时,使用绑定挂载的方式,将一个属性文件提供给容器中的所有必需值:
OperationEngine:
volumes:
- /secure/config/database.properties:/config/database.properties
/secure/config
目录是Docker主机文件系统的一部分。该目录的创建和填充方式由您决定。通常我会通过环境设置脚本创建该目录,然后将包含该环境正确配置的私有Git存储库克隆到此目录中。当然,只有具有所需权限级别的人才能查看包含敏感配置详细信息的Git存储库,例如生产系统。
希望这有所帮助。