强制 Docker 容器等待 Postgresql 容器准备就绪

问题描述

考虑 Dockerfile:

Dockerfile:

FROM node:14
copY . /app
RUN npm i
RUN npm run build_database_migrations <<<<====== This is the problematic command

... more commands 

使用 sequelize-cli :

在 package.json 中:

"scripts": {
   "build_database_migrations": "sequelize db:migrate",}

还有 Docker-compose :

Docker-compose.yaml

version: "3"
services:
  
  postgresql:
    image: postgres:latest
    environment:
      POSTGRES_USER: user1
      POSTGRES_PASSWORD: pass1
      POSTGRES_DB: somedb      
    ports:
      - "5432:5432"
 
  app:    
    build:
      context: ./employee
      dockerfile: ./Dockerfile
    ports:
      - "9000:9000"
    restart: on-failure
    depends_on:    
      - postgresql      
    links:
      - postgresql

每当我运行 Docker-compose up 时,app 都不会等待 postgresql 启动并运行, 这导致在 Postgreqsql 容器侦听端口 app 之前构建 RUN npm run build_database_migrations 容器并运行命令 5432

我们如何强制 app 容器等待 Postreqsql 容器准备就绪并监听端口 5432 ,以便它能够在实时 Postgresql 容器上运行迁移?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)