启动数据库后容器未启动

时间:2019-11-14 10:33:59

标签: docker docker-compose

我想在docker(我在nest.jsmysql上使用的数据库)中运行服务器。这是我的ormtypedockerfile

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容器中正确启动服务器。

1 个答案:

答案 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