将泊坞窗设置移动到文件夹中

时间:2018-03-16 10:09:17

标签: docker docker-compose

我有一个docker-compose设置类似于:

if (USART_GetFlagStatus(USARTx, USART_FLAG_RXNE) != RESET)

Dockerfile包含指令,包括源的COPY命令。

由于所有不同的工具,包括多个docker设置,我想通过将所有文件移动到文件夹来组织它:

/
- sources/
- docker-compose.yml
- Dockerfile
- .dockerignore
- many more files

或只将docker-compose.yml文件留在此文件夹之外:

/
- sources/
- docker/
- many more files

我想这样做是因为:

  • 清理项目文件夹
  • 我目前在项目文件夹中有多个泊坞设置,将它们移动到单独的文件夹可以实现更清晰和/或更精确的设置(例如多个dockerignore文件)

目前我遇到了一些有意义的问题,例如:

/
- sources/
- docker/
- many more files

是否可以实现此设置?谢谢!

2 个答案:

答案 0 :(得分:2)

在Dockerfile中,您无法访问构建上下文之外的文件。在您的情况下,构建上下文是包含Dockerfile的目录。

您可以在composefile中更改构建上下文。 下面是一个示例,其中composefile位于根目录,Dockerfile位于docker文件夹下:

version: '3'

services:
  test:
    build:
      context: .
      dockerfile: docker/Dockerfile

在这种情况下,Dockerfile内部应该相对于上下文设置文件路径。

COPY sources sources

对于dockerignore

如.dockerignore文件的文档中所述:

  

在docker CLI将上下文发送到docker守护程序之前,它会在上下文的根目录中查找名为.dockerignore的文件

因此,您需要将dockerignore文件添加到上下文的根目录。

答案 1 :(得分:0)

你不能在Dockerfile中使用它,但你应该能够使用.env文件并从那里拉入它。

https://docs.docker.com/compose/env-file/

您可以尝试以下方式:

.ENV

SOURCE_PATH=../sources/

Dockerfile

COPY ${SOURCE_PATH}/myfile /some/destination