gpt4 book ai didi

docker - Dockerfile客户端和服务器构建

转载 作者:行者123 更新时间:2023-12-02 19:49:41 28 4
gpt4 key购买 nike

有关Dockerfile的快速问题。

我有一个像这样的文件夹结构:

docker-compose.yml
client
src
package.json
Dockerfile
...etc

客户端文件夹包含reactjs应用程序,而根目录是带有 typescript 的nodejs服务器。我已经像这样创建了Dockerfile:
FROM node

RUN mkdir -p /server/node_modules && chown -R node:node /server
WORKDIR /server
USER node
COPY package*.json ./
RUN npm install

COPY --chown=node:node . ./dist

RUN npm run build-application

COPY /src/views ./dist/src/views
COPY /src/public ./dist/src/public

EXPOSE 4000
CMD node dist/src/index.js

npm run build-application命令执行客户端构建(npm run build --prefix ./client)和服务器(rimraf dist && mkdir dist && tsc -p)。问题是Docker无法找到客户端文件夹错误:
npm ERR! enoent ENOENT: no such file or directory, open '/server/client/package.json'
npm ERR! enoent This is related to npm not being able to find a file.

有人可以解释为什么吗?以及如何解决这个问题?

Docker撰写文件:
...
server:
build:
context: ./server
dockerfile: Dockerfile
image: mazosios-pedutes-server
container_name: mazosios-pedutes-server
restart: unless-stopped
networks:
- app-network
env_file:
- ./server/.env
ports:
- "4000:4000"

最佳答案

由于错误是说client/package.json中没有/server,因此我的问题是以下问题。

您的./client目录位于/server内吗?

Dockerfile WORKDIR指令使跟随它的所有命令在您作为参数传递给WORKDIR的目录中执行。

我猜如果您在最后一个RUN tree -d指令之后添加COPY(仅列出嵌套目录),您将能够看到client目录所在的位置,并且能够修复其路径。

关于docker - Dockerfile客户端和服务器构建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61746210/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com