docker - Docker:启动服务器后节点服务器未运行
问题描述
我有一个Dockerfile
和一个docker-compose.yml
文件。如果我执行docker-compose up
,它会返回:
Creating network "demoapi_webnet" with the default driver
Creating demoapi_web_1 ... done
Creating d2c_postgres ... done
Attaching to demoapi_web_1, d2c_postgres
...
d2c_postgres | 2020-07-28 00:47:48.772 UTC [1] LOG: database system is ready to accept connections
但是我的节点服务器没有启动。这些是我的 docker 配置文件:
Dockerfile
FROM node:12.13-alpine As development
WORKDIR /app
COPY package.json .
COPY package-lock.json .
RUN npm install
COPY dist .
COPY wait-for-it.sh .
CMD ["npm", "run", "start"]
码头工人-compose.yml
version: '3'
services:
db:
image: postgres
networks:
- webnet
container_name: "d2c_postgres"
environment:
POSTGRES_PASSWORD: 010203
POSTGRES_USER: postgres
POSTGRES_DB: demo
ports:
- "5432:5432"
web:
image: nest-app
ports:
- "3000:3000"
networks:
- webnet
environment:
DB_HOST: db
command: ["./wait-for-it.sh", "db:5432", "--", "npm", "run", "start"]
networks:
webnet:
我唯一的线索是这一行: env: can't execute 'bash': No such file or directory
我可以使用该配置建立与 pgadmin/postgres 的连接,但node
服务器没有启动。我做错了什么,我该如何解决?
解决方案
Wait-for-it 基于bash并且它与 alpine 不兼容,因为 alpine 基于ash
或者sh
这就是你看到的原因can't execute 'bash': No such file or directory
。您可以查看开放问题以获得 alpine 支持。
你可以制作一个 /bin/sh 版本以用于 alpine linux
对于高山,您可以使用等待
./wait-for
是一个脚本,旨在同步 docker 容器等服务。它与sh 和 alpine 兼容。
services:
db:
image: postgres:9.4
backend:
build: backend
command: sh -c './wait-for db:5432 -- npm start'
depends_on:
- db
推荐阅读
- java - Gradle:如何使静态资源在同一项目模块的类路径上可用
- python - 如何有效地在python中循环opencv代码
- java - Java中是否有与Promise.race()等价的东西?
- docker - docker如何在同一主机上的默认桥上处理不同容器之间的通信?
- php - 如何解决在数组错误时调用成员函数 only()
- javascript - 迭代 zip 可迭代以在表中生成多行 - Reactjs
- python - waitForObject 返回匹配模式的第一个对象。有没有办法获得所有对象的列表?
- css - 当 Flexbox 组件包装时向下推 Grid Container
- javascript - ":active" 不适用于 Firefox 中的 Dragscroll.js
- db2 - 在交互式 sql as400 中调用程序