我有一个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
我想这样做是因为:
目前我遇到了一些有意义的问题,例如:
/
- sources/
- docker/
- many more files
是否可以实现此设置?谢谢!
答案 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/
您可以尝试以下方式:
SOURCE_PATH=../sources/
COPY ${SOURCE_PATH}/myfile /some/destination