【发布时间】:2021-12-05 00:23:36
【问题描述】:
我正在尝试对基于微服务的应用程序进行 dockerize。 api 是用 nestjs 和 MySQL 构建的。以下是目录结构
.
├── docker-compose.yml
├── api
│ ├── src
│ ├── Dockerfile
│ ├── package.json
│ ├── package-lock.json
│ ├── ormconfig.js
│ └── .env
├── payment
│ ├── src
│ ├── Dockerfile
│ ├── package.json
│ └── package-lock.json
├── notifications
│ ├── src
│ ├── Dockerfile
│ ├── package.json
│ └── package-lock.json
└
以下是api目录下的Dockerfile
FROM node:12.22.3
WORKDIR /usr/src/app
COPY package*.json .
RUN npm install
CMD ["npm", "run", "start:dev"]
以下是docker-compose.yml 文件。请注意,付款和通知的详细信息尚未添加到 docker-compose 文件中。
version: '3.7'
networks:
server-network:
driver: bridge
services:
api:
image: api
build:
context: .
dockerfile: api/Dockerfile
command: npm run start:dev
volumes:
- ".:/usr/src/app"
- "/usr/src/app/node_modules"
networks:
- server-network
ports:
- '4000:4000'
depends_on:
- mysql
mysql:
image: mysql:5.7
container_name: api_db
restart: always
environment:
MYSQL_DATABASE: api
MYSQL_ROOT_USER: root
MYSQL_PASSWORD: 12345
MYSQL_ROOT_PASSWORD: root
ports:
- "3307:3306"
volumes:
- api_db_db:/var/lib/mysql
networks:
- server-network
volumes:
api_db:
现在,当我尝试使用 docker-compose up 启动应用程序时,出现以下错误。
没有这样的文件或目录,打开'/usr/src/app/package.json'
更新
尝试删除卷,它也没有帮助。另外,尝试通过运行列出目录的内容来查看api 中的内容
docker-compose run api ls /usr/src/app
它在文件夹中显示以下内容
node_modules package-lock.json
非常感谢任何帮助。
【问题讨论】:
-
volumes:块将映像中的源代码替换为与您的主机系统不同的内容(您可以通过docker-compose run api ls /usr/src/app查看实际存在的内容;因为您正在绑定安装.目录我猜它是包含docker-compose.yml文件的根目录,而不是任何特定的应用程序)。删除整个volumes:块有帮助吗? -
@DavidMaze 删除卷没有帮助。尝试列出目录
docker-compose run api ls /usr/src/app的内容,它显示文件夹中的node_modules package-lock.json文件。
标签: docker docker-compose dockerfile nestjs