在dockerfile/docker组合上下文中跳转



我当前的项目结构如下:

/home/some/project
│   .credentials_dev
│   .credentials_prod
│   ca.cer
│   docker-compose.yml
│   Dockerfile
│   init.sql
│   nginx_dev.conf
│   nginx_prod.conf
│
├───src
└───users

Compose制作了四个容器,其中两个是dev&prod版本的应用程序,谁使用适当的prod&dev文件。正如您所看到的,以下结构根几乎没有过载,所以我想将所有部署人员转移到单独的目录中,以生成以下内容:

/home/some/project
├───deployment
│       .credentials_dev
│       .credentials_prod
│       ca.cer
│       docker-compose.yml
│       Dockerfile
│       init.sql
│       nginx_dev.conf
│       nginx_prod.conf
│
├───src
└───users

想法是在docker主机上接收以下结构的结果:

host
├───dev
│   ├───src
│   └───users
├───prod
│   ├───src
│   └───users
└───project
├───deployment
│       .credentials_dev
│       .credentials_prod
│       ca.cer
│       docker-compose.yml
│       Dockerfile
│       init.sql
│       nginx_dev.conf
│       nginx_prod.conf
│
├───src
└───users

以及两个容器app_dev和app_prod,这两个卷适当地安装到文件夹/host/dev和/host/prod中。

我尝试了在这里找到的多种解决方案,但所有不同变体都返回了以下错误:

ERROR: Service 'app_dev' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder264200969/ca.cer: no such file or directory
ERROR: Service 'app_dev' failed to build: COPY failed: Forbidden path outside the build context: ../ca.cer ()

当docker compose试图构建图像时,错误总是出现在该字符串上:

COPY deployment/ca.cer /code/

请告诉我如何达到预期的结果。

Deployment文件夹在构建上下文之外。Docker将内部的所有文件作为构建上下文传递给部署文件。然而,部署文件夹本身就在它之外。

将您的副本声明改为:

COPY ./ca.cer /code/

因为在图像中,您已经在该文件夹中了。

最新更新