aplikasi springboot tidak boleh mewujudkan sambungan dengan pangkalan data sql yang berjalan pada docker
P粉156532706
P粉156532706 2023-08-29 09:43:41
0
1
503

Saya mempunyai projek yang dijalankan dalam localhost menggunakan intellij sebagai contoh Springboot, menggunakan SQL Xampp tanpa sebarang masalah. Ini berfungsi dengan baik. Tetapi sekarang saya mahu menggunakan segala-galanya untuk buruh pelabuhan. Jadi saya mencipta fail docker dan fail docker-compose dalam direktori saya seperti ini:

-Application | -Frontend (belum dilaksanakan dalam docker) -Backend(springAPI) | -dockerfile -Python (flaskAPI) (belum dilaksanakan dalam docker) docker-compose.yml

docker-compose.yml kelihatan seperti ini:

versi: '3.9' perkhidmatan: db: imej: mysql:terkini mulakan semula: sentiasa persekitaran: MYSQL_ROOT_PASSWORD:  MYSQL_DATABASE: mydb MYSQL_USER:  MYSQL_PASSWORD:  pelabuhan: - "3306:3306" jilid: - ./data:/var/lib/mysql phpmyadmin: imej: phpmyadmin/phpmyadmin:terkini mulakan semula: sentiasa bergantung kepada: -db pelabuhan: - "8888:80" persekitaran: PMA_HOST:db MYSQL_ROOT_PASSWORD: contoh spring-api: imej: spring-api:terkini pelabuhan: - "8080:8080" bergantung kepada: -db jilid: dbdata: mysql-data:

Fail docker springapi adalah seperti berikut:

# Gunakan masa jalan OpenJDK rasmi sebagai imej induk DARI openjdk:17-jdk-slim # Tetapkan direktori kerja kepada /app WORKDIR/apl # Salin fail balang aplikasi ke bekas SALIN build/libs/backendAPI.jar backendAPI.jar # Jalankan aplikasi CMD ["java", "-jar", "backendAPI.jar"]

Ini boleh terdiri daripada bekas docker dan run. Bagaimanakah boot spring java membuang ralat dan ditutup.Ralatnya ialah:

`2023-03-06T12:25:37.603Z INFO 1 --- [utama] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Bermula. .. 2023-03-06T12:25:38.685Z RALAT 1 --- [utama] com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Pengecualian semasa permulaan kumpulan. com.mysql.cj.jdbc.exceptions.CommunicationsException: Kegagalan pautan komunikasi Paket terakhir yang berjaya dihantar ke pelayan ialah 0 milisaat yang lalu Pemandu belum menerima sebarang paket daripada pelayan.`

Saya cuba mengkonfigurasi semula aplikasi saya.tetapan seperti ini:

spring.datasource.url=jdbc:mysql://localhost:8888/mydb spring.datasource.username= spring.datasource.password= spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

Tetapi ia tiada kesan. Kerana ia terus melemparkan ralat yang sama. Pelayan SQL boleh diakses melalui url yang diberikan. Jadi berjalan dengan baik (kecuali tidak mempunyai hak pentadbir, tetapi itu isu yang berbeza.)

Persediaan ini, dengan beberapa tweak pada application.settings, berfungsi dengan baik apabila saya hanya menggunakan Xammp dan intellij. Tetapi sekarang saya tidak dapat menyambungkannya. Apa yang saya hilang di sini?

Edit perkara yang telah saya cuba setakat ini

db: imej: mysql:terkini mulakan semula: sentiasa nama_bekas: sql-db

Kemudian tukar aplikasi.tetapan:

spring.datasource.url=jdbc:mysql://sql-db:8888/mydb (dan juga dengan sql-db:3306)
;

Tetapi ini masih memberikan ralat yang sama.

P粉156532706
P粉156532706

membalas semua (1)
P粉510127741

Nyatakan nama bekas untuk perkhidmatan pangkalan data anda dalam fail karang docker

db: image: mysql:latest restart: always **container_name: db-container**

Kemudian dalam url jdbc anda, anda harus merujuk nama bekas pangkalan data yang dikonfigurasikan dan port konfigurasi sebenar bekas pangkalan data.

Jadi datasource.url anda kelihatan seperti

spring.datasource.url=jdbc:mysql://db-container:3306/mydb
    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!