Docker compose: 无法启动容器,因为它找不到本地存在的文件
Docker compose: failing to start container, as it fails to find file, which exists locally
所以我正在尝试使用 dokcer compose 实用程序来为 Web 应用程序和数据库启动容器。
我在与 app
目录相同的目录中有 docker-compose.yml
文件,其中包含 package.json
文件,所以它看起来像这样(为简洁起见,省略了其余文件) :
- docker-compose.yml
- app/
- package.json
docker 撰写非常基础:
version: "3.7"
services:
app:
image: node:12-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: sa
MYSQL_DB: todos
mysql:
image: mysql:latest
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: sa
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
然后,当我尝试使用 docker-compose up -d
命令 运行 容器时,我看到 DB 容器成功启动,但 Web 应用程序容器无法启动。在使用 docker logs
检查时,我看到日志:
Couldn't find a package.json file in "/app"
由于我对 docker 和 docker 完全陌生,所以我真的不知道它到底在哪里定义以及如何解决它。
虽然看起来非常基本和简单...
假设您从下面列出的顶级目录上传:
- docker-compose.yml
- app/
- package.json
您正在安装此处定义的目录内容:
volumes:
- ./:/app
这反过来导致 /app
目录包含 app
目录,因此它看起来像 /app/app/package.json
.
您可以像这样调整音量安装来解决这个问题:
volumes:
- ./app/:/app
所以我正在尝试使用 dokcer compose 实用程序来为 Web 应用程序和数据库启动容器。
我在与 app
目录相同的目录中有 docker-compose.yml
文件,其中包含 package.json
文件,所以它看起来像这样(为简洁起见,省略了其余文件) :
- docker-compose.yml
- app/
- package.json
docker 撰写非常基础:
version: "3.7"
services:
app:
image: node:12-alpine
command: sh -c "yarn install && yarn run dev"
ports:
- 3000:3000
working_dir: /app
volumes:
- ./:/app
environment:
MYSQL_HOST: mysql
MYSQL_USER: root
MYSQL_PASSWORD: sa
MYSQL_DB: todos
mysql:
image: mysql:latest
volumes:
- todo-mysql-data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: sa
MYSQL_DATABASE: todos
volumes:
todo-mysql-data:
然后,当我尝试使用 docker-compose up -d
命令 运行 容器时,我看到 DB 容器成功启动,但 Web 应用程序容器无法启动。在使用 docker logs
检查时,我看到日志:
Couldn't find a package.json file in "/app"
由于我对 docker 和 docker 完全陌生,所以我真的不知道它到底在哪里定义以及如何解决它。
虽然看起来非常基本和简单...
假设您从下面列出的顶级目录上传:
- docker-compose.yml
- app/
- package.json
您正在安装此处定义的目录内容:
volumes:
- ./:/app
这反过来导致 /app
目录包含 app
目录,因此它看起来像 /app/app/package.json
.
您可以像这样调整音量安装来解决这个问题:
volumes:
- ./app/:/app