这是我的 Dockerfile:
FROM node:15.3.0
ENV NODE_ENV=development
WORKDIR /usr/src/app
COPY . .
RUN node -v
RUN npm install -g nodemon
RUN npm install -g express
RUN npm install
CMD [ "npm", "start" ]
我的 docker-compose 文件:
version: "3.8"
services:
web:
container_name: api-mmogc-web
build: .
volumes:
- .:/usr/src/app
ports:
- "6510:3000"
depends_on:
- db
但它不会在构建时安装节点依赖
docker-compose up --build
图像 ls
root@xxx:/usr/src/app# ls -l
total 392
-rw-r--r-- 1 root root 177 May 8 14:52 Dockerfile
-rw-r--r-- 1 root root 1773 May 8 14:44 app.js
drwxr-xr-x 3 root root 96 May 8 14:44 bin
drwxr-xr-x 5 root root 160 May 8 14:44 config
drwxr-xr-x 3 root root 96 May 8 14:44 constants
-rw-r--r-- 1 root root 582 May 8 14:44 docker-compose.yml
drwxr-xr-x 3 root root 96 May 8 14:44 middleware
drwxr-xr-x 7 root root 224 May 8 14:44 migrations
drwxr-xr-x 9 root root 288 May 8 14:44 models
-rw-r--r-- 1 root root 386 May 8 14:44 notas.txt
-rw-r--r-- 1 root root 1332 May 8 14:44 nothing.js
-rw-r--r-- 1 root root 371443 May 8 14:44 package-lock.json
-rw-r--r-- 1 root root 1129 May 8 14:44 package.json
drwx------ 26 999 root 832 May 8 14:54 postgres_data
drwxr-xr-x 3 root root 96 May 8 14:44 public
drwxr-xr-x 5 root root 160 May 8 14:44 routes
drwxr-xr-x 5 root root 160 May 8 14:44 seeders
-rw-r--r-- 1 root root 53 May 8 14:44 setup-test.js
drwxr-xr-x 6 root root 192 May 8 14:44 utils
drwxr-xr-x 5 root root 160 May 8 14:44 views
已编辑。 根据评论。
评论已安装的依赖项,但现在我在主机上的更改未反映在 image
services:
web:
container_name: api-mmogc-web
build: .
# volumes:
# - .:/usr/src/app
答案 0 :(得分:0)
不要从 volumes
中删除 docker-compose.yml
。在使用卷时安装 node_modules
很棘手。
有几种方法可以做到这一点。我建议您将此步骤添加到您的 dockerfile 中:
# Installing node_modules to another folder and load it from there
RUN ["mkdir", "/modules"]
ADD ["./package.json", "/modules"]
WORKDIR /modules
RUN npm install
ENV NODE_PATH=/modules/node_modules
# Set the WORKDIR
WORKDIR /usr/src/app
编辑:您不应将 COPY
和 WORKDIR
一起使用。因为当您同时使用它们时,您将再次使用 /usr/src/app
命令覆盖创建的 COPY
文件夹。所以,如果你要使用这个技巧,你也应该删除 COPY