【问题标题】:Docker-compose up do not start backend after databaseDocker-compose up 在数据库之后不启动后端
【发布时间】:2018-01-09 21:02:51
【问题描述】:

在我的 docker-compose 文件中,我有一个前端、后端和数据库。 如果我启动 docker-compose up 后端在数据库完成之前启动,所以它们崩溃了,因为后端无法连接到任何数据库。

server_backend:
build:
  context: server_backend
ports:
  - 8080:8080
links: 
  - database
depends_on:
  - database
restart: unless-stopped



database:
    image: mysql
    ports:
      - 3306:3306

我使用“depends_on:”但它没有帮助。

我怎么说,后端应该在数据库之后创建?

【问题讨论】:

    标签: docker docker-compose


    【解决方案1】:

    您需要:

    • 将代码添加到您的后端映像中,等待数据库变为可用,然后再启动您的后端应用程序,或者

    • 向您的后端应用程序添加代码,如果数据库连接失败,它将重试数据库连接。

    第一个选项实现起来最简单,而第二个选项更健壮(例如,如果您要重新启动数据库容器,它将允许您的后端应用程序继续运行)。

    第一个选项的实现可能与以下 shell 脚本一样简单(修改为包含适当的连接凭据):

    while ! mysql -h database -e 'select 1' mydatabase; do
        sleep 1
    done
    

    这将反复尝试连接数据库并执行 sql 命令。它将循环直到sql命令成功执行。例如,您可以将其放置在后端映像中的 ENTRYPOINT 脚本中(或作为应用程序启动脚本的一部分)。

    【讨论】:

      猜你喜欢
      • 2021-05-18
      • 2020-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      相关资源
      最近更新 更多