【问题标题】:Append python path environment variable in docker-compose instead of dockerfile在 docker-compose 中添加 python 路径环境变量而不是 dockerfile
【发布时间】:2022-06-10 22:20:55
【问题描述】:

我使用 AWS Lambda docker 映像在本地主机上或 CI/CD 期间进行开发和测试。 在我的 Docker 文件中,我添加了 ENV PYTHONPATH "${PYTHONPATH}:/var/task" 以绑定安装了我的 python 库的/var/task

我也会这样做,但不在我的 Dockerfile 中添加 ENV PYTHONPATH "${PYTHONPATH}:/var/task"

我试图在我的 docker-compose 中添加这一行,但我的 python 路径没有更新。

    environment:
      - PYTHONPATH="${PYTHONPATH}:/var/task"

我做错了什么?

【问题讨论】:

  • 仅更改文件不会更改环境变量,但我认为这不是您的问题。所以,请详细说明一下:你做了什么?你观察到了什么?你期望观察什么,为什么?基本上,提取并提供minimal reproducible example
  • 为什么要从 Dockerfile 中删除该设置?这似乎是您每次运行容器时总是需要的东西,无论上下文如何,因此它将被内置到映像中。
  • 此设置仅在 CI/CD 期间用于测试容器内的代码然后它将部署在 AWS 上,我不想在我的 lambda 运行期间引入错误,所以我更喜欢只是在测试期间附加python路径(使用docker-composedocker exec),但也许我会将该行添加到dockerfile中,我猜它不会对我的lambda函数产生真正的影响

标签: python linux docker docker-compose


【解决方案1】:

解决方案 1 - 您可以使用 .env file

例子:

  $ cat .env
    TAG=v1.5
  $ cat docker-compose.yml
    version: '3'
    services:
      web:
        image: "webapp:${TAG}"

注意1:从+v1.28开始,.env文件放在项目目录的基础。

注意 2: 理想情况下,.env 文件将位于 docker-compose 所在的同一目录中。但您可以根据需要进行自定义。

在创建映像之前进行测试 - 您可以使用 config command 验证这一点,

$ docker-compose 配置

version: '3'
services:
  web:
    image: "webapp:v1.5"

解决方案 2 - Dockerfile 中的 ARG directive

关注https://stackoverflow.com/a/34600106/3098330

【讨论】:

  • 感谢您的回答,但我会在不创建新文件的情况下找到解决方案。
  • ARG 指令确实很有趣,但在我的场景中这不是最好的方法我试图将docker exec generator export PYTHONPATH="$PYTHONPATH:/var/task" 添加到我的 CI 脚本中,但我遇到了这个错误:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "export": executable file not found in $PATH: unknown
【解决方案2】:

如果您使用${VARIABLE} 语法,Compose 将进行变量替换。

为防止 Compose 插值,您可以使用 $$ 转义 $

    environment:
      - PYTHONPATH="$${PYTHONPATH}:/var/task"

见:https://docs.docker.com/compose/compose-file/compose-file-v3/#variable-substitution

【讨论】:

    猜你喜欢
    • 2019-09-11
    • 2019-12-18
    • 2022-01-01
    • 2015-06-17
    • 2018-08-07
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    相关资源
    最近更新 更多