あなたdocker-compose.yml
からAWS RDS MySQLインスタンスにリンクすることができますいくつかの方法があります。
RDS MySQLインスタンスにアクセスする必要があるコンテナに環境変数を設定するのが最も簡単な方法です。あなたはその後、環境例えば${MYSQL_HOST}
からデータベース接続の詳細情報を読み取るために、そのサービスで構成を更新することができます
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/
:だからたとえば、次のようなものを見て、あなたのOperationEngine
サービス定義を更新することができます。
このアプローチの明らかな欠点は、docker-compose.ymlにプレーンテキストとして保存されている接続の詳細があることです。これはあまり良くありませんが、要件によっては許容される場合もあります。
第2のアプローチ(と私が好む傾向があるもの)は、実行中のコンテナにデータベース構成をマウントすることです。
ほとんどのアプリケーションでは、プロパティファイルからデータベース接続の詳細を読み取ることができます。例として:
config.db.host=your-mysql-cname.rds.amazon.com
config.db.user=foo
config.db.password=bar
私はセットアップ私の環境をだろう、実行時に、私bind mount性質があることを提出するよう:スタートアップアプリケーション/config/database.properties
から読み取られ、データベースに接続するには、次のプロパティを必要にそれを言うことができますコンテナに必要なすべての値を提供します。
OperationEngine:
volumes:
- /secure/config/database.properties:/config/database.properties
/secure/config
ディレクトリがドッカーホスト上のファイルシステムの一部です。そのディレクトリがどのように作成され、読み込まれているかは最新のものです。通常、私は環境設定スクリプトでディレクトリを作成し、プライベートGitリポジトリをこのディレクトリにクローンして、その環境に適した設定を含むようにします。必然的に必要な権限レベルを持つ人だけが、機密性の高い設定情報を含むGitリポジトリ、つまり本稼動システムを見ることができます。
希望に役立ちます。
「リンク」とはなんですか? MySQL RDSは、アプリケーションが接続する管理対象サービスです。あなたのコンテナからあなたのデータベースのIPとポートへの*ネットワーク接続*を許可する方法を尋ねていますか? –
あなたが投稿したものは、あなたのコンテナにMySQLイメージを含める試みのようです* RDSに接続しない* –
"docker-compose up"を実行すると、mysqlコンテナが作成され、しかし、私はこの方法が欲しくない、私は私と一緒にRDSのmysqlのDBを持っているので、私は構成を行うwhenevr、アプリケーションはRDSに接続する必要があります。 – Shishir