Heim  >  Fragen und Antworten  >  Hauptteil

Wie teile ich ein Datenbankschema in DockerCompose-Dateien?

Ich lerne Docker. Ich erstelle ein Image aus einer Docker-Datei in einer Counter-Anwendung. Und ich verwende MySQL als Datenbank. Die DockerCompose-Datei verwendet eine Datenbank und zwei Container aus demselben Anwendungsimage. Die MySQL-Datenbank verfügt über zwei verschiedene Modi. Mein Ziel ist es, separate Anwendungsdienste mit unterschiedlichen Ports (z. B. 9000 und 9001) und einem eigenen Schema zu haben. Wenn ich localhost:9000/index aufrufe, wird der erste Zähler angezeigt, und wenn ich localhost:9000/index aufrufe, wird der zweite Zähler angezeigt.

Aber das Problem ist, dass beide den ersten Modus verwenden, sodass das Ergebnis der gleiche Zähler ist. Wie isoliert man Architektur?

Ein Dokument schreiben->

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

P粉032977207P粉032977207213 Tage vor252

Antworte allen(1)Ich werde antworten

  • P粉475315142

    P粉4753151422024-03-20 14:54:05

    最好为每个应用程序及其数据库提供单独的 docker compose。

    如果您只想为两个应用程序使用一个 docker compose,则可以使用不同的公开架构和端口为 mysql 定义两个单独的服务,并在应用程序中引用它们中的每一个。

    这与您为其定义了两个服务的应用程序相同。

    此外:

    您提到了同一个应用程序,您的意思似乎是:

    本地主机:9000/索引

    本地主机:9001/索引

    Antwort
    0
  • StornierenAntwort