【问题标题】:Docker running both Yarn update and npm update on docker-compose upDocker 在 docker-compose up 上同时运行 Yarn update 和 npm update
【发布时间】:2021-04-02 17:05:34
【问题描述】:

我正在运行一个 docker 容器,其中包含我的后端代码作为卷:

docker-compose.yml

version: '3'

services:
  auth:
    container_name: ${AUTH_CONTAINER}
    build: ./modules/auth
    working_dir: /usr/app
    command: "npm install && npm start"
    volumes:
      - ../backend/modules/auth:/usr/app
    expose:
      - 9229
    ports:
      - 9229:9229

Dockerfile:

FROM node:alpine

WORKDIR /usr/app

COPY entrypoint.sh .

ENTRYPOINT ["sh", "/entrypoint.sh"]

入口点:

#!/usr/bin/env bash
exec "$@"

当我运行 docker-compose up 时,第一步总是运行 yarn。我收到一条错误消息,说我不应该同时使用 npm 和 yarn,因为我目前正在为项目使用 npm。有没有办法让 node:alpine 只使用 npm (我知道它已安装),然后在运行 docker-compose up 时调用 npm install ?

编辑:控制台图像:

EDIT2:Package.json

{
  "name": "auth",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "start": "node index.js"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1"
  }
}

【问题讨论】:

  • node:alpine 镜像被构建时,it runs yarn --version。这就是它对yarn 所做的一切。
  • @Styx 在我的控制台中运行:yarn install v1.22.5。然后出现一个带有依赖项的 yarn.lock 文件——我假设它属于 node:alpine。我在上面添加了一张控制台的图片。
  • 请显示package.json
  • 您可以在您的 Dockerfile 中执行这些步骤,并删除 volumes: 吗?您的设置直接在主机上使用 Node 带来什么好处?
  • @Styx 我发布了我的 package.json。 @David Maze 好吧,我计划对多个微服务进行 dockerizing。所以我认为 docker-compose(意味着我可以运行多个容器)是我想要使用的东西。 volumes: 直接指向我在 modules/auth 下的项目文件,所以如果有任何变化,它会自行重建。让我大吃一惊的是,我的代码中根本没有任何引用纱线的东西:/我认为它可能来自节点:高山容器 - 但是@Styx说它没有:/

标签: node.js docker


【解决方案1】:

对于到达这一点并且想知道为什么会发生这种情况的任何人。确保在运行 docker-compose up 之前运行 docker-compose -- build FIRST,这是我遇到的问题。

Dockerfile

FROM node:14

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY entrypoint.sh /

ENTRYPOINT ["sh", "/entrypoint.sh"]

入口点:

exec "$@"

码头工人撰写:

version: '3'

services:
  auth:
    container_name: "Auth"
    build: "./auth"
    working_dir: /usr/app
    command: "npm start"
    environment:
      - NODE_ENV=local
    volumes:
      - ../backend/modules/auth:/usr/app
    expose:
      - 9299
    ports:
      - 9229:9229

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-13
    • 2023-03-09
    • 2021-04-26
    • 2018-12-18
    • 2021-08-15
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    相关资源
    最近更新 更多