Rumah > Soal Jawab > teks badan
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粉4753151422024-03-20 14:54:05
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