私は Docker を学んでいます。カウンターアプリケーションでDockerfileからイメージを構築しています。そしてデータベースとしてmysqlを使用します。 DockerCompose ファイルは、同じアプリケーション イメージからの 1 つのデータベースと 2 つのコンテナを使用します。 Mysql データベースには 2 つの異なるモードがあります。私の目標は、異なるポート (例: 9000 と 9001) を持つ個別のアプリケーション サービスを用意し、独自のスキーマを持つことです。 localhost:9000/index を呼び出すと最初のカウンタが表示され、localhost:9000/index を呼び出すと 2 番目のカウンタが表示されます。
しかし、問題は、どちらも最初のパターンを使用しているため、結果は同じカウンターになることです。アーキテクチャをどのように分離するか?
ファイルの書き込み->
バージョン: '3.1' サービス: mysql: 画像: mysql 再起動: 常に ポート: - 「3306:3306」 環境: MYSQL_ROOT_PASSWORD: パスワード ボリューム: - mysql_data:/var/lib/mysql こんにちはドッカー: 画像: hello-docker:0.0.2 再起動: 常に 環境: DB_CONNECTION_IP: mysql DB_SCHEMA_NAME: こんにちはカウンター ポート: - 「9000:9000」 ボリューム: - mysql_data:/var/lib/mysql こんにちは-docker2: 画像: hello-docker:0.0.2 再起動: 常に 環境: DB_CONNECTION_IP: mysql DB_SCHEMA_NAME: hello_counter2 ポート: - 「9001:9000」 ボリューム: mysql_data:
application.yaml->
###春: 情報元: URL: &connectionUrl jdbc:mysql://${DB_CONNECTION_IP:localhost}:${DB_CONNECTION_PORT:3306}/${DB_SCHEMA_NAME}?allowPublicKeyRetrieval=true&createDatabaseIfNotExist=true&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone= UTC&zeroDateTime Behavior=convertToNull&useUnicode=true&characterEncoding=UTF-8 ユーザー名: ルート パスワード: パスワード ドライバークラス名: com.mysql.cj.jdbc.Driver jpa: hibernate.ddl-auto: 検証する 生成-ddl: true show-sql: true プロパティ.hibernate.format_sql: true サーバ: ポート: 9000
アプリケーションとそのデータベースごとに個別の Docker Compose を使用するのが最善です。
2 つのアプリケーションに対して 1 つの docker compose のみを使用したい場合は、公開されたスキーマとポートが異なる 2 つの別個の mysql サービスを定義し、アプリケーション内でそれぞれを参照できます。
これは、2 つのサービスが定義されている同じアプリケーションです。
###また:###同じアプリケーションについて言及しましたが、次のことを意味しているようです:
ローカルホスト:9000/インデックス
###そして###ローカルホスト:9001/インデックス