condition
在版本 3.0 至 3.8 中已删除 compose 规范,但现在又回来了!使用 compose 规范 v3.9 版本,您可以使用condition
作为depends_on
Options sous forme de syntaxe longue.
J'utilise docker compose pour démarrer des projets web MySQL et Java, Le démarrage de JavaWeb nécessite que MySQL crée des données complètes, j'utilise donc healthcheck
Mais 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
La déclaration incorrecte est :
test: "mysql -uroot -p$$MYSQL_ROOT_PASSWORD -e 'SELECT * FROM factor_header' fuba-db "
Sortie console :
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
En raison de fubaquant dependants_on mysql healthcheck, fubaquant n'est pas démarré non plus
Le journal de contrôle de santé du conteneur mysql est :
J'ai vérifié le journal de vérification de l'état de MySQL et il est également sain
Merci pour votre aide
Il semble que vous essayez d'exécuter le bilan de santé avec un utilisateur et un mot de passe incorrects. Vous avez
$mysql
和3456
va essayer d'analyser les valeurs de ces variables. Ce que vous voulez, c'est utiliser ce qui suit.Cela tentera ensuite d'utiliser les variables d'environnement du service utilisateur
mysql
和密码123456
运行mysaqladmin
(两者都定义为 docker-compose 上mysql
)J'ai configuré le bilan de santé pour autoriser uniquement 3 tentatives avec un intervalle de 1 seconde. Lorsque compose démarre Java, le service mysql n'a pas atteint un état sain dans ce délai de 3 secondes, donc compose s'arrête et signale cette erreur. Augmentez simplement le nombre de tentatives et tout ira bien