首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在创建其他服务之前,等待mysql服务在docker组合中准备就绪

在创建其他服务之前,等待mysql服务在docker组合中准备就绪
EN

Stack Overflow用户
提问于 2018-10-10 15:50:01
回答 2查看 6.7K关注 0票数 0

我试图在我的等-它-它中使用docker-compose.yaml来等待mysql在创建依赖它的服务之前做好准备。这是我的docker-compose.yaml

代码语言:javascript
复制
version: '3.5'

services:
  mysql:
    image: mysql:5.6
    ports:
      - "3307:3306"
    networks:
      - integration-tests
    environment:
      - MYSQL_DATABASE=mydb
      - MYSQL_USER=root
      - MYSQL_ROOT_PASSWORD=mypassword
    entrypoint: ./wait-for-it.sh mysql:3306
networks:
  integration-tests:
    name: integration-tests

当我试图使用docker-组合运行这个错误时,我会得到这个错误:

开始集成测试_mysql_1 ..。错误 错误:对于集成-test_mysql_1无法启动服务mysql: OCI运行时创建失败: container_linux.go:348:启动容器进程导致"exec:\“./等待- for -it.sh\”:stat ./等待-for-it.sh:没有这样的文件或目录“:未知 错误:对于mysql,无法启动服务mysql: OCI运行时创建失败: container_linux.go:348:启动容器进程导致"exec:\“./等待- for -it.sh\”:stat./等待-for-it.sh:没有这样的文件或目录“:未知错误:在启动项目时遇到错误。

wait-for-it.sh脚本与我的docker-compose.yaml文件在同一个级别上,所以我不明白为什么找不到它。

EN

回答 2

Stack Overflow用户

发布于 2018-10-10 17:53:24

你的问题是,你试图执行的东西不是你的形象的一部分。您告诉docker从mysql:5.6创建一个容器,它不包含等待-it.sh,然后告诉它启动等待-for-it.sh启动容器。

我建议您创建包含以下内容的自己的形象:

代码语言:javascript
复制
#Dockerfile
FROM mysql:5.6

COPY wait-for-it.sh /wait-for-it.sh
RUN chmod +x /wait-for-it.sh

然后将mysql:5.6替换为您的映像,并且您应该能够执行等待-it.sh。我还将通过命令来执行它,而不是这样的入口点:

代码语言:javascript
复制
#docker-compose.yml
...
mysql:
  image: yourmysql:5.6
  command:  bash -c "/wait-for-it.sh -t 0 mysql:3306"
...

其中,-t 0将等待mysql,而不需要超时。

票数 5
EN

Stack Overflow用户

发布于 2018-11-26 03:42:46

可以使用docker 在……上面选项控制服务启动顺序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52744186

复制
相关文章

相似问题

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