gpt4 book ai didi

docker - 从任意文件夹在构建上下文和Dockerfile文件夹中编写文件

转载 作者:行者123 更新时间:2023-12-02 20:00:03 25 4
gpt4 key购买 nike

我想在保持项目文件结构整洁的同时编写服务。但是Docker似乎在构建上下文之外存在路径问题。我正在创建一个软件包,并希望将所有与Docker相关的内容保留在项目根目录下的文件夹中。但是我找不到从docker-composeDockerfile引用项目文件的方法。创建容器时,必须复制项目中的文件。

这是我当前的项目结构:

root/
docker/
docker-compose.yml
Dockerfile
docker_resource.txt
config
src/
project-files.whatever
root-files.txt

现在,如果我 $cd docker$docker-compose up,我尝试了两种可能性。我的Dockerfile使用 COPY .. /path/in/container复制文件,或者compose文件的构建说明如下:
x-build: &my-build
context: ..
dockerfile: docker/Dockerfile

第一种方法不起作用。显然,Dockerfile无法引用构建上下文之外的任何内容。第二种方法似乎有效,但只有在我将复制命令从 docker_resource.txt更改为 docker/docker_resource.txt后,该方法才有效。理想情况下,我想保留从 docker build./docker的功能并保持内容整洁-不必担心Dockerfile中的组合上下文。这可能吗?

至少,我希望将docker相关文件放置在任意文件夹中,并且能够在无需其他更改的情况下在compose文件中指定构建上下文。

最佳答案

您需要将src/project-files.whatever视为自给自足的最小构建。我将Dockerfile放在src中。它应被视为项目的一部分,并且应特定于它。但是,您仍然需要编辑复制命令。

root/
docker/
docker-compose.yml
docker_resource.txt
config
src/
project-files.whatever
Dockerfile
root-files.txt

无论如何,您都想将您的compose和Dockerfile和资源分开。根据 docker_resource中的内容,您可能需要将其移至src。将镜像视为程序本身,无需配置。我建议将资源/配置内容放入一个卷中,这样您就不必每次更改都从头开始重建。

做到这一点的另一种方法是将Dockerfile置于上一层,并允许您的根成为构建上下文。在这种情况下,您的结构将如下所示:
/root
Dockerfile
docker-compose.yml
docker_resource.txt
config
src/
project-files.whatever
root-Files/
root-files.txt

不知道你是否喜欢那样。

关于docker - 从任意文件夹在构建上下文和Dockerfile文件夹中编写文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54477830/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com