搜尋

首頁  >  問答  >  主體

如何在 DockerCompose 檔案中共享資料庫架構?

我正在學習 Docker。我在計數器應用程式中從 Dockerfile 建立映像。而且我使用mysql作為資料庫。 DockerCompose 檔案使用來自相同應用程式映像的一個資料庫和兩個容器。 Mysql 資料庫有兩種不同的模式。我的目標是使用具有不同連接埠(例如 9000 和 9001)的單獨應用程式服務,並且它們有自己的架構。當我呼叫 localhost:9000/index 時,它顯示第一個計數器,當我呼叫 localhost:9000/index 時,它顯示第二個計數器。

但問題是它們都使用第一個模式,因此結果是相同的計數器。如何隔離架構?

撰寫文件->

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=UTSSwuseSSLmSam&SSLval_JSvateSvSult=DatSvSvS告訴遠&STSMSMulvS告訴SDSMformS​​DSM活動表&DSMSetSatSMSetvS告訴SjSSvSSvS告訴Sjkkk555&SSL​​SMetvSvSvS未來表&JDSv.SvvSvS告訴SformS​​DSk活動S活動表&DSvSvS%S%S​​jvSvvSvS​​​oo​​zk_SetvSSvS告訴SconSadSvSvS告訴SadSkSdeconSkvSdeconse​​p.SM.SMformSatSconSt.St. C&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粉032977207258 天前285

全部回覆(1)我來回復

  • P粉475315142

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

    最好為每個應用程式及其資料庫提供單獨的 docker compose。

    如果您只想為兩個應用程式使用一個 docker compose,則可以使用不同的公開架構和連接埠為 mysql 定義兩個單獨的服務,並在應用程式中引用它們中的每一個。

    這與您為其定義了兩個服務的應用程式相同。

    此外:

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

    本機:9000/索引

    本機:9001/索引

    #

    回覆
    0
  • 取消回覆