Docker-Compose Building back 无法准备上下文:无法评估 Docker 文件路径中的符号链接
Docker-Compose Building back unable to prepare context: unable to evaluate symlinks in Dockerfile path
我有以下目录结构:
.
├── docker-compose.yml
├── README.md
└── services
├── api
│ ├── Dockerfile
│ └── src
│ ├── app.py
│ ├── settings.py
│ └── .env
└── recorder
├── Dockerfile
├── Pipfile
├── Pipfile.lock
├── .env
└── src
docker文件包含
version: '3'
services:
back:
build:
dockerfile: services/api/Dockerfile
context: services/api/
ports:
- '5001:5001'
env_file:
- services/api/.env
recorder:
build:
dockerfile: services/recorder/Dockerfile
context: services/recorder/
ports:
- '5002:5002'
env_file:
- services/recorder/.env
当我执行时
docker-compose up -d --no-deps --build
或
docker-compose up -d
或
docker-compose up back
我总是得到
Building back
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat > /home/juser/VideoCapturer/services/api/services: no such file or directory
我不明白为什么 docker 也将最后一个 '/services' 附加到路径中。
知道如何解决这个问题吗?
谢谢
Dockerfile是相对于使用compose时的上下文的。这与 docker CLI 的行为方式有点不一致,但它就是这样。
在你的情况下,无论如何你都可以简化它:
services:
back:
build: ./services/api
recorder:
build: ./services/recorder
如果您想提供文件和上下文,如前所述,Dockerfile 需要与上下文相关。
services:
back:
build:
context: ./services/api
dockerfile: ./Dockerfile
recorder:
context: ./services/recorder
dockerfile: ./Dockerfile
仅当文件未命名为 Dockerfile 时才需要这样做 and/or 不在上下文目录中。所以在这种情况下,您可以使用上面的缩写形式。
我有以下目录结构:
.
├── docker-compose.yml
├── README.md
└── services
├── api
│ ├── Dockerfile
│ └── src
│ ├── app.py
│ ├── settings.py
│ └── .env
└── recorder
├── Dockerfile
├── Pipfile
├── Pipfile.lock
├── .env
└── src
docker文件包含
version: '3'
services:
back:
build:
dockerfile: services/api/Dockerfile
context: services/api/
ports:
- '5001:5001'
env_file:
- services/api/.env
recorder:
build:
dockerfile: services/recorder/Dockerfile
context: services/recorder/
ports:
- '5002:5002'
env_file:
- services/recorder/.env
当我执行时
docker-compose up -d --no-deps --build
或
docker-compose up -d
或
docker-compose up back
我总是得到
Building back unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat > /home/juser/VideoCapturer/services/api/services: no such file or directory
我不明白为什么 docker 也将最后一个 '/services' 附加到路径中。
知道如何解决这个问题吗?
谢谢
Dockerfile是相对于使用compose时的上下文的。这与 docker CLI 的行为方式有点不一致,但它就是这样。
在你的情况下,无论如何你都可以简化它:
services:
back:
build: ./services/api
recorder:
build: ./services/recorder
如果您想提供文件和上下文,如前所述,Dockerfile 需要与上下文相关。
services:
back:
build:
context: ./services/api
dockerfile: ./Dockerfile
recorder:
context: ./services/recorder
dockerfile: ./Dockerfile
仅当文件未命名为 Dockerfile 时才需要这样做 and/or 不在上下文目录中。所以在这种情况下,您可以使用上面的缩写形式。