J'apprends Docker. Je construis une image à partir d'un Dockerfile dans une application de compteur. Et j'utilise MySQL comme base de données. Le fichier DockerCompose utilise une base de données et deux conteneurs de la même image d'application. La base de données Mysql a deux modes différents. Mon objectif est d'avoir des services d'application distincts avec des ports différents (par exemple 9000 et 9001) et ils ont leur propre schéma. Lorsque j'appelle localhost:9000/index, il affiche le premier compteur et lorsque j'appelle localhost:9000/index, il affiche le deuxième compteur.
Mais le problème est qu'ils utilisent tous les deux le premier mode, donc le résultat est le même compteur. Comment isoler l’architecture ?
Rédiger un document->
version: '3.1' services: mysql: image: mysql restart: always ports: - "3306:3306" environment: MYSQL_ROOT_PASSWORD: password volumes: - mysql_data:/var/lib/mysql hello-docker: image: hello-docker:0.0.2 restart: always environment: DB_CONNECTION_IP: mysql DB_SCHEMA_NAME: hello-counter ports: - "9000:9000" volumes: - mysql_data:/var/lib/mysql hello-docker2: image: hello-docker:0.0.2 restart: always environment: DB_CONNECTION_IP: mysql DB_SCHEMA_NAME: hello_counter2 ports: - "9001:9000" volumes: mysql_data:
application.yaml->
spring: datasource: 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&zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8 username: root password: password driver-class-name: com.mysql.cj.jdbc.Driver jpa: hibernate.ddl-auto: validate generate-ddl: true show-sql: true properties.hibernate.format_sql: true server: port: 9000
Il est préférable d'avoir un docker composé séparé pour chaque application et sa base de données.
Si vous souhaitez utiliser un seul docker compose pour deux applications, vous pouvez définir deux services distincts pour MySQL avec des schémas et des ports exposés différents, et référencer chacun d'eux dans l'application.
Il s'agit de la même application pour laquelle vous avez défini deux services.
Aussi :
Vous avez mentionné la même application, vous semblez vouloir dire :
localhost:9000/index
et
localhost:9001/index