首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制npmrc时,Docker组合失败。

复制npmrc时,Docker组合失败。
EN

Stack Overflow用户
提问于 2021-08-07 22:49:28
回答 1查看 879关注 0票数 0

当我试图运行我的对接者时,我遇到了这个错误

=>错误6/9复制.npmrc .npmrc

0.0s =>错误7/9添加package.json /User/gs/Documents/Dev/DockerDi 0.0s

代码语言:javascript
复制
version: "3"
   
services:
  gs-service:
    build:
      context: .
      dockerfile: ./gs/Dockerfile
    ports:
      - 8081:8081
   
  ui-service:
    build:
      context: .
      dockerfile: ./ui/Dockerfile
    ports:
      - 8083:8083

以下是正在失败的Dockerfile的详细信息。这是一个子目录。例如,/user/gs/dockerexperiment/ui

  • docker-compose文件位于父目录中。例如,/user/gs/dockerexperiment

  • Dockerfile位于子目录中。例如,/user/gs/dockerexperiment/ui

我知道班里的路出了问题,但我很难弄清楚我错过了什么。

EN

回答 1

Stack Overflow用户

发布于 2021-08-08 00:35:26

Dockerfile在构建上下文中操作;这是您在docker-compose.yml文件中命名为docker-compose.yml的目录树的副本(或者,如果您直接使用docker build,则它的目录参数)。

代码语言:javascript
复制
build:
  context: .

在Dockerfile中,任何COPY (或ADD)指令都被解释为相对于此目录树。(如果它看起来是一个绝对路径,那么它仍然相对于这个目录;任何..路径步骤都会被忽略。)

代码语言:javascript
复制
COPY package*.json ./
# copies ./package.json, relative to the context directory

但是,您可以在评论中说明,这里实际上并不是您的文件所在。相对于docker-compose.yml文件,您需要./ui/package.json;Dockerfile也位于同一个子目录中。

您显示的Dockerfile似乎不需要来自其直接树之外的任何内容,因此解决这一问题的最简单方法是将ui目录设置为构建上下文:

代码语言:javascript
复制
version: '3.8'
services:
  ui:
    build: ./ui
    # Same as
    # build:
    #   context: ./ui
    #   dockerfile: Dockerfile # relative to the context directory
    ports:
      - 8085:8085

在Dockerfile中,您可以删除重复的ADD package.json行,并且应该删除危险的RUN npm set config行。您还可以设置一个更短的WORKDIR,类似于/app是典型的。

如果不想更改docker-compose.yml文件,其他可能的更改是调整Dockerfile,使其COPY路径相对于(父)构建上下文目录。

代码语言:javascript
复制
COPY ui/package*.json .

这样做的好处是,如果需要,可以从其他应用程序访问文件,或者可以将共享文件存储在父目录中。

代码语言:javascript
复制
FROM node:14

# Add the public TLS key for our internal repository
# (from the parent directory)
COPY repository.example.com.crt /usr/local/share/ca-certificates
RUN update-ca-certificates

WORKDIR /app

# Also get our local npm configuration (from the parent directory)
COPY .npmrc .

# Install the ./ui application
COPY ui/package*.json .
RUN npm ci
COPY ui/src ./src
EXPOSE 8085
CMD ["npm", "start"]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68696615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档