【问题标题】:Dockercompose Node.js restartingDocker Compose Node.js 重启
【发布时间】:2020-12-24 06:12:01
【问题描述】:

我在运行带有 NODE.JS 图像的多阶段 docker-compose 时遇到了一些问题。 在构建/运行多阶段 docker-compose 时,Node 容器在循环中重新启动,但是如果我使用具有以下参数的 Docker Run,则使用相同的映像构建它可以正常工作

Docker 运行:

    docker run \
        -it \
        --name webportal
        --rm \
        -v ${PWD}:/app \
        -v /app/node_modules \
        -p 3001:3000 \
        -e CHOKIDAR_USEPOLLING=true \
        webnodeimg

在 dockerfile 上它的舞台是:

  web:
    build:
      context: ./web/
      dockerfile: ./Dockerfile
    container_name: webportal
    volumes:
        - .:/app
        - /app/node_modules
    ports:
        - '3001:3000'
    environment:
        - CHOKIDAR_USEPOLLING=true

文件夹结构如下

Root
├── docker-compose.yml
├── api
|   ├── Other Folders...
│   ├── Dockerfile
│   └── Jenkinsfile
├── web
│   ├── debug.log
│   ├── docker-compose.yml
│   ├── Dockerfile
│   ├── Dockerfile-test
│   ├── Jenkinsfile
│   ├── node_modules
│   ├── package.json
│   ├── package-lock.json
│   ├── public
│   ├── README.md
│   ├── src
│   └── tsconfig.json
└──

节点 Dockerfile:

FROM node:lts
WORKDIR /app
ENV PATH /app/node_modules/.bin:$PATH
COPY package.json ./
COPY package-lock.json ./
RUN npm install
RUN npm install react-scripts@3.4.1 -g --silent
COPY . ./
EXPOSE 3000
CMD ["npm", "start"]

检查日志时,我看到以下内容

> web@1.0.0 start /app
> react-scripts start
ℹ 「wds」: Project is running at http://172.26.0.2/
ℹ 「wds」: webpack output is served from 
ℹ 「wds」: Content not from webpack is served from /app/public
ℹ 「wds」: 404s will fallback to /
Starting the development server...

【问题讨论】:

  • 为什么说这是multistage?我只看到一条FROM 指令。另外,你的日志是怎么说的?
  • 对不起,我的意思是我在 docker-compose 上构建了不同的服务,我在顶部添加了 Docker Logs 的输出
  • 为什么说是不同的服务?我只看到您的 docker-compose.yml 文件中声明了一项服务。我也看不到您在哪里设置了重启策略。默认应该是不重启。您可以在 docker-compose.yml 文件中使用 restart: "no" 明确说明这一点。此外,这些看起来不像 docker-compose 日志,它应该以服务名称为前缀。使用docker-compose logs web
  • 刚刚完成,与上面的输出相同,奇怪的是使用 docker-compose 它只是不起作用,但如果我使用 Docker Run 运行相同的图像,效果很好
  • “它只是不起作用”。你是什​​么意思?能走多远?容器是否遇到错误?你能介绍一些日志消息来看看它有多远吗?为什么会重启?显然,如果没有在容器中运行的代码,我无法重现您的问题。将其精简为一个简单的 hello world。或者把整个容器换成tail -f /dev/null,看看是不是系统/docker问题。

标签: node.js docker docker-compose


【解决方案1】:

为了避免在运行后使用 docker-compose exit 构建 docker 容器,我在 docker compose 中添加了“stdin_open: true”,现在工作正常

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 2020-04-10
    • 1970-01-01
    • 2017-01-12
    • 2015-04-30
    相关资源
    最近更新 更多