Bagaimana untuk berkongsi skema pangkalan data dalam fail DockerCompose?
P粉032977207
P粉032977207 2024-03-19 21:28:55
0
1
237

Saya sedang belajar Docker. Saya sedang membina imej daripada Dockerfile dalam aplikasi kaunter. Dan saya menggunakan mysql sebagai pangkalan data. Fail DockerCompose menggunakan satu pangkalan data dan dua bekas daripada imej aplikasi yang sama. Pangkalan data Mysql mempunyai dua mod yang berbeza. Matlamat saya adalah untuk mempunyai perkhidmatan aplikasi yang berasingan dengan port yang berbeza (cth. 9000 dan 9001) dan mempunyai skema mereka sendiri. Apabila saya memanggil localhost:9000/index ia menunjukkan kaunter pertama dan apabila saya memanggil localhost:9000/index ia menunjukkan kaunter kedua.

Tetapi masalahnya ialah mereka berdua menggunakan mod pertama, jadi hasilnya adalah kaunter yang sama. Bagaimana untuk mengasingkan seni bina?

Tulis dokumen->

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:

permohonan.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粉032977207
P粉032977207

membalas semua(1)
P粉475315142

Adalah lebih baik untuk membuat karang docker yang berasingan untuk setiap aplikasi dan pangkalan datanya.

Jika anda hanya mahu menggunakan satu karang docker untuk dua aplikasi, anda boleh menentukan dua perkhidmatan berasingan untuk mysql dengan skema dan port terdedah yang berbeza, dan merujuk setiap satu daripadanya dalam aplikasi.

Ini adalah aplikasi yang sama yang mana anda mempunyai dua perkhidmatan yang ditakrifkan.

Juga:

Anda menyebut apl yang sama, anda nampaknya bermaksud:

localhost:9000/index

dan

localhost:9001/index

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!