gpt4 book ai didi

python - 在哪里放置 .dockerignore?

转载 作者:行者123 更新时间:2023-12-02 19:00:37 26 4
gpt4 key购买 nike

考虑以下典型 python项目结构:

fooproject 
- main.py
- src/
- test/
- logs/
- Dockerfile
- .dockerignore
- README.md

.dockerfile 应该阻止 test/logs/目录不被包含在 docker 镜像中。
test/
logs/
Dockerfile的内容是
FROM ubuntu16.04

COPY . /app/
WORKDIR /app
USER root
RUN pip install -r requirements.txt
ENTRYPOINT ["main.py"]

但是,当通过 PyCharm 的自动 docker 集成运行时, testlogs目录都被复制到容器中。 PyCharm 运行命令最终如下:
7eb643d9785b:python -u /opt/project/main.py 

我尝试了一些方法无济于事,例如复制 .dockerignore在应用程序其余部分上方的目录中。例如:
COPY . /app/
COPY .dockerignore .dockerignore
WORKDIR /app

想知道 PyCharm 的 /opt/project 是否有可能以某种方式干扰?所以 .dockerignore 在这样的项目中到底应该在哪里?

更新

我分享了 docker container inspect 的输出与BMitch,他能够找到解决方案。 PyCharm 在容器设置运行配置中自动挂载一个卷

enter image description here

最佳答案

.dockerignore用于控制构建上下文中包含哪些文件。这会影响 COPYADD Dockerfile 中的命令,以及最终生成的图像。当您使用卷挂载运行该镜像时,例如:

        {
"Type": "bind",
"Source": "/home/adam/Desktop/Dev/ec2-data-analysis/grimlock",
"Destination": "/opt/project",
"Mode": "rw",
"RW": true,
"Propagation": "rprivate"
},

该卷装载会覆盖该容器的镜像内容。对路径的所有访问都将转到您的桌面目录而不是图像内容,并且 Linux 绑定(bind)挂载没有 .dockerignore 的概念文件。

当您在没有卷安装的情况下运行此镜像时,您应该会看到不同的行为。

对于将来遇到此问题的任何人, .dockerignore需要位于构建上下文的根目录中。构建上下文是您在构建命令末尾传递的目录,通常是 .或当前目录。如果启用 BuildKit,它将 first check for a Dockerfile.dockerignore 可以更改 Dockerfile 路径/名称的位置。并测试您的 .dockerignore ,见 this answer .

关于python - 在哪里放置 .dockerignore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60713751/

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