我正在使用multiple dockerfiles构建一个应用程序(每个服务一个)。我的应用程序的目录结构如下:
app
├── dockerfiles
│ ├── webserver
│ │ └── Dockerfile
│ └── database
│ └── Dockerfile
├── public
└── <frontend>
├── db
└── <data>
[...]
├── LICENSE
├── README.md
└── docker-compose.yml
Dockerfile
中,我想使用COPY
命令复制现有代码:# Dockerfile
COPY ./public /var/www/html
docker-compose.yml
文件部署该应用程序:# docker-compose.yml
version: "3"
services:
webserver:
build: ./dockerfiles/webserver
image: webserver:php-apache
docker-compose
)运行app
时,出现以下错误:Building webserver
Step 1/2 : FROM php:7.1.11-apache-jessie
---> cb6a5015ad72
Step 2/2 : COPY ./public /var/www/html
Service 'webserver' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder193736188/public: no such file or directory
Dockerfile
移至应用程序的根目录,此错误将消失,因此我知道这是由路径或构建上下文问题引起的。Dockerfile
(在应用程序的根目录中),或者app
└── Dockerfile
Dockerfiles
(在应用程序的根目录中)。app
├── Dockerfile.webserver
└── Dockerfile.database
docker-compose.yml
或基本运行时命令进行哪些更改? WORKDIR
命令呢? 您要做的就是在docker-compose.yml文件的build部分中添加context: .
和dockerfile
,以便您的服务了解完整的目录结构。
# docker-compose.yml
version: "3"
services:
webserver:
build:
context: .
dockerfile: ./dockerfiles/webserver/Dockerfile
image: webserver:php-apache
关于docker - Docker:当Dockerfile位于子目录中时使用COPY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47785706/
欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) | Powered by Discuz! X3.4 |