首页 > 解决方案 > Docker 在 docker-compose up 上同时运行 Yarn update 和 npm update

问题描述

我正在运行一个包含我的后端代码作为卷的 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.jsdocker

解决方案


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

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

推荐阅读