【发布时间】:2018-05-05 20:58:29
【问题描述】:
我正在尝试使用 docker-compose 按顺序启动 3 个 docker 容器。我有以下容器:
- app-service-db 容器 -> 数据库
- config-service 容器 -> Spring Boot 应用程序
- app-service 容器 -> Spring Boot 应用程序
我希望“app-service”容器仅在其他两个容器完成启动时启动。 我正在使用“等待”脚本等待服务可用(https://github.com/Eficode/wait-for)。
这是我在 docker-compose.yml 中的内容
version: '3.4'
services:
config-service:
image: "config-service:1.0"
hostname: config-service
container_name: config-service
build:
context: ../config
dockerfile: config.dockerfile
expose:
- "8888"
logging:
driver: json-file
app-service-db:
image: "app-service-db:10.3"
hostname: app-service-db
container_name: app-service-db
build:
context: ../app-service
dockerfile: app-db.dockerfile
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: app
expose:
- "3306"
logging:
driver: json-file
app-service:
image: "app-service:1.0"
hostname: app-service
container_name: app-service
build:
context: ../app-service
dockerfile: app.dockerfile
ports:
- "8080:8080"
expose:
- "8080"
logging:
driver: json-file
command: sh -c './wait-for app-service-db:3306 && config-service:8888'
depends_on:
- config-service
- app-service-db
config.dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/config-1.0-final.jar config.jar
ENTRYPOINT ["java", "-jar", "config.jar"]
EXPOSE 8888
app-db.dockerfile
FROM mariadb:10.3
app.dockerfile
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD target/app-1.0-final.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
EXPOSE 8080
当我运行“docker-compose up”cmd 时,“app-service”容器在“app-service-db”和“config-service”完成之前启动并退出,因为它找不到任何联系。 我怎样才能使这项工作并强制“ app-service ”容器仅在其他两个容器启动时才启动。
提前致谢。
【问题讨论】:
标签: docker spring-boot docker-compose