有点奇怪,运行docker-compose build
时没有看到任何错误,但是当我访问容器时,没有看到node_modules
文件夹,只有package.json
和{ {1}}个文件。
我运行package-lock.json
时的所有日志均正常显示。例如:
docker-compose build
我的Dockerfile:
....
added 552 packages from 678 contributors and audited 4007 packages in 11.2s
found 0 vulnerabilities
....
还有FROM node:10
ENV APP_PATH /app
WORKDIR $APP_PATH
COPY ./app_front/package*.json ./
RUN npm install -g ts-node typescript
RUN npm install
COPY . .
EXPOSE 3000
CMD [ "npm", "run", "start" ]
文件
docker-compose
注意:
但是,当我在version: "3.5"
services:
mysql:
image: mysql:5.7
container_name: racer_mysql
restart: always
environment:
MYSQL_DATABASE: xxxx
MYSQL_USER: "xxxx"
MYSQL_PASSWORD: "xxxx"
MYSQL_ROOT_PASSWORD: xxxx
ports:
- "3306:3306"
expose:
- "3306"
volumes:
- ./docker/database:/var/lib/mysql
- ./docker/mysql_init:/docker-entrypoint-initdb.d
app_front:
container_name: app_front
build:
context: .
dockerfile: ./docker/app_front/Dockerfile
volumes:
- ./app_front:/app_front
ports:
- "3000:3000"
中添加多个命令时,它可以工作。但是我想将软件包安装在docker-compose
中,而不是Dockerfile
文件中。
docker-compose
我尝试过的问题与此issue完全相同,但没有成功。 欢迎任何建议!
答案 0 :(得分:1)
我认为您是在构建过程的App
文件夹中构建/app_front/
,然后使用以下命令删除该文件夹中的“覆盖”所有文件:
volumes:
- ./app_front:/app_front
在您的compose
中,建议您删除volumes
部分,然后重试。
答案 1 :(得分:1)
可能发生的情况是COPY . .
正在覆盖映像中的node_modules目录。在与Dockerfile相同的目录中创建一个.dockerignore
文件,并忽略node_modules
。