docker - 我想在 Mysql 启动并运行后启动我的 Spring Boot 应用程序
问题描述
我有一个使用 mysql DB 的 java spring boot 应用程序。我只想在 mysql 启动并运行后启动我的 spring 应用程序。(mysql 需要 40-60 秒才能启动)。请建议如何实现它。
这是撰写文件:
version: "3.8"
services:
mysql:
networks:
- my-network-1
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_USER: root
MYSQL_DATABASE: mydb
expose:
- "3306"
my-spring:
depends_on:
- mysql
build:
context: .
dockerfile: dockerfile.dockerfile
networks:
- my-network-1
expose:
- "8080"
networks:
my-network-1:
driver: overlay
这是码头文件:
FROM openjdk:8u252-jdk
ARG JAR_FILE=/somepath/jar.jar
COPY ${JAR_FILE} my.jar
ENTRYPOINT ["java","-jar","my.jar"]
当前出现连接被拒绝错误。
谢谢
阿达沙
解决方案
在 docker compose 文件的 mysql 部分下使用它
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
interval: 1m30s
timeout: 20s
retries: 10
所以你的撰写文件应该是这样的
version: "3.8"
services:
mysql:
networks:
- my-network-1
image: mysql:latest
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_ROOT_USER: root
MYSQL_DATABASE: mydb
expose:
- "3306"
healthcheck:
test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
interval: 1m30s
timeout: 20s
retries: 10
my-spring:
depends_on:
- mysql
build:
context: .
dockerfile: dockerfile.dockerfile
networks:
- my-network-1
expose:
- "8080"
networks:
my-network-1:
driver: overlay
如果上述解决方案不起作用,我建议您阅读此文档https://docs.docker.com/compose/startup-order/
推荐阅读
- google-classroom - 如何使用课堂 API 向 Google 课堂的每个学生分享不同的 URL?
- url-rewriting - 如何在 Java EE 中美化路由?
- hibernate-search - 如何将@Facet 与嵌入式实体一起使用?
- python - 根据特定文本提取固定数量的元素并转换为python中的数据框
- python - 如何构建具有 argparse 运算符的命令行界面?
- python - 从文件输入并剥离
- java - 安卓 SQLITE!从同一张表中查询多个数据(列)
- html - 使用 NodeJs 和 multer 以一种形式将不同的文件类型上传到 cloudinary
- azure - 单点登录上的 Connect-AzureAD 空白页
- amazon-web-services - Tkinter Python AWS Cloud9