我使用 docker compose 进行非常基本的节点映像配置。我可以在容器构建后使用
npm install
。但我想在此期间这样做,并且我在 docker-compose.yaml 中绑定的卷似乎不起作用,只有在构建之后才起作用。
这是正确的行为吗?如果是,那么我应该在构建期间复制 package.json 文件来安装它吗? 这里困扰我的事情是,我需要使构建的上下文更宽,以从不同的文件夹(../frontend/package.json)获取文件,这似乎是错误的,但它是一个大的吗?交易?
错误
Could not read package.json: Error: ENOENT: no such file or directory, open '/var/www/html/frontend/package.json'
docker-compose.yaml
node:
container_name: ${PROJECT_NAME}_node
build:
context: ./node
command:
- npm run dev -- --host
ports:
- '8012:5173'
volumes:
- ./frontend:/var/www/html/frontend
Docker 文件
FROM node:latest
WORKDIR /var/www/html/frontend
RUN npm install
RUN npm run build
使用 Dockerfile,您可以构建 Docker 映像,并且 Docker Compose 从现有映像创建容器。 或者,您可以在撰写文件中组合这两个命令(使用构建选项)并舍入
docker compose up -d --build
命令。此命令首先构建图像 - 与运行 docker build --tag image_name .
命令时相同。最后,创建容器。
因此,如果您想在构建时运行
npm install
,您需要使用 Dockerfile 中的 COPY 或 ADD 命令将所需的文件添加到映像中