我想在docker
(我在nest.js
和mysql
上使用的数据库)中运行服务器。这是我的ormtype
和dockerfile
。
docker-compose.yml
#dockerfile
FROM node:12.13.0-alpine
WORKDIR /src
COPY ./package.json .
COPY ./package-lock.json .
RUN npm install
COPY . .
EXPOSE 8081
CMD npm run start:dev
我让服务器等待数据库启动。但是服务器启动后,我得到一个错误。
# docker-compose.yml
version: "3.3"
services:
mysql:
container_name: mysql
image: mysql:5.7.27
ports:
- 3306:3306
expose:
- 3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: root
MYSQL_PASSWORD: root
MYSQL_DATABASE: root
restart: always
server:
container_name: sever
command: ["./wait-for-it.sh", "mysql:3306", "--", "npm", "run", "start:dev"]
depends_on:
- mysql
links:
- mysql
build:
context: server
dockerfile: Dockerfile
environment:
PORT: 8081
ports:
- 8081:8081
restart: on-failure
volumes:
- ./server:/src/
我在哪里弄错了?如何在Docker容器中正确启动服务器。
答案 0 :(得分:3)
您的基本映像node:12.13.0-alpine
以高山为基础,其中wait-for-it
是bash的基础,ash
为高山no
的bash。
错误日志看起来很清楚。
can't execute 'bash': No such file or directory
您可以尝试的一种选择是在您的nodejs Dockerfile中添加bash
FROM node:12.13.0-alpine
WORKDIR /src
RUN apk add --no-cache bash
然后尝试运行。
但这是高山的问题
Can you make an /bin/sh version for use with alpine linux ? #18
或者您可以使用docker-wait-for-it-alpine