首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Docker组合mysql容器在依赖它的应用程序之后运行?

Docker组合mysql容器在依赖它的应用程序之后运行?
EN

Stack Overflow用户
提问于 2018-09-30 08:06:54
回答 2查看 0关注 0票数 0

我有一个依赖于MySQL的简单java应用程序。

这是我的docker-compose.yaml样子:

代码语言:javascript
复制
version: "3.3"
services:
  docker-mysql:
    image: mysql:latest
    environment:
      - MYSQL_ROOT_PASSWORD=root
      - MYSQL_DATABASE=test
      - MYSQL_PASSWORD=root
    volumes:
      - /var/lib/mysql
    ports:
      - 3306:3306
  my-app:
    build: .
    depends_on:
      - docker-mysql
    ports:
      - 8080:8080

这是我Dockerfile创建一个容器化的应用程序,即my-app

代码语言:javascript
复制
FROM openjdk:8
EXPOSE 8080
ADD /target/Service1-0.0.1.jar Service1.jar
ENTRYPOINT ["java","-jar","Service1.jar"]

当我尝试时docker-compose up,应用程序成功启动Tomcat,但无法连接到MySQL容器,因为它在应用程序之后启动:

在此处输入图像描述
在此处输入图像描述

Docker撰写日志

EN

回答 2

Stack Overflow用户

发布于 2018-09-30 16:08:58

它在文档https://docs.docker.com/compose/startup-order/中 非常清楚地说明depends_on只会以该顺序启动docker构建,它不会等待构建完成。您需要提供自己的服务command,以确保在继续下一个构建之前启动所需的服务。或者你可以跳过docker compose,只需使用docker run按你想要的顺序执行的bash脚本。

票数 0
EN

Stack Overflow用户

发布于 2018-09-30 17:36:09

通常,它假设在db容器之后出现。docker logs docker-mysql_1 --tail 25 -f粘贴的结果是什么?

另外,尝试为db容器添加一个卷部分,如下所示

代码语言:javascript
复制
environment:
  - MYSQL_ROOT_PASSWORD=root
  - MYSQL_DATABASE=test
  - MYSQL_PASSWORD=root
volumes:
  - /var/lib/mysql
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008894

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档