condition
在版本 3.0 至 3.8 中已删除 compose 规范,但现在又回来了!使用 compose 规范 v3.9 版本,您可以使用condition
作为depends_on
Pilihan dalam bentuk sintaks panjang.
Saya menggunakan docker compose untuk memulakan projek web MySQL dan Java, Permulaan JavaWeb memerlukan MySQL untuk mencipta data lengkap, jadi saya menggunakan healthcheck
Tetapi mysql healthcheck
有问题,这是我的docker-compose
# docker-compose.yml version: "3.9" services: mysql: build: context: ./mysql command: [ 'mysqld', '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci', '--default-time-zone=+8:00', '--lower-case-table-names=1' ] ports: - "3306:3306" environment: MYSQL_DATABASE: fuba-db MYSQL_ROOT_PASSWORD: fb123456 healthcheck: test: "mysql -uroot -p$$MYSQL_ROOT_PASSWORD -e 'SELECT * FROM factor_header' fuba-db " interval: 1s timeout: 3s retries: 3 redis: build: ...... nginx: build: ...... fubaquant: build: context: ./webapps ports: - "8080:8080" volumes: - /mnt/java/jar:/home/ruoyi #jar包 depends_on: mysql: condition: service_healthy redis: condition: service_started
Pernyataan yang salah ialah:
test: "mysql -uroot -p$$MYSQL_ROOT_PASSWORD -e 'SELECT * FROM factor_header' fuba-db "
Keluaran konsol:
pro-mysql-1 | 2022-04-07T08:16:54.203710Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option. container for service "mysql" is unhealthy
Disebabkan tanggungan fubaquant_pada pemeriksaan kesihatan mysql, fubaquant juga tidak dimulakan
Log pemeriksaan kesihatan bekas mysql ialah:
Saya menyemak log pemeriksaan kesihatan mysql dan ia juga sihat
Terima kasih atas bantuan anda
Nampaknya anda cuba menjalankan pemeriksaan kesihatan dengan pengguna dan kata laluan yang salah. Anda ada
$mysql
和3456
akan cuba menghuraikan nilai pembolehubah ini. Apa yang anda mahu ialah menggunakan yang berikut.Ini kemudiannya akan cuba menggunakan pembolehubah persekitaran pengguna
mysql
和密码123456
运行mysaqladmin
(两者都定义为 docker-compose 上mysql
perkhidmatan)Saya mengkonfigurasi pemeriksaan kesihatan untuk hanya membenarkan 3 percubaan semula dengan selang 1 saat. Apabila compose memulakan java, perkhidmatan mysql belum mencapai keadaan yang sihat dalam kelewatan 3 saat ini, jadi karang berhenti dan melaporkan ralat ini. Hanya tambah bilangan percubaan semula dan anda akan baik-baik saja