Docker Compose set env variable from command

qco9c6ql  于 2023-11-17  发布在  Docker
关注(0)|答案(2)|浏览(117)

我正在使用docker compose设置一个VSCode dev-container。我还有一些文件myVersion.txt,其中包含一个字符串。在构建容器时,我需要在DockerFile中使用此字符串,但字符串必须留在myVersion.txt中,我更喜欢避免手动将其复制粘贴到另一个文件,如.envDockerfile
有没有一种方法可以实现这一点?像ENV MY_VERSION=${cat local/file/myVersion.txt},这显然是行不通的
devcontainer.json

{
  "dockerComposeFile": "./docker-compose.yml",
  "service": "game",
  "workspaceFolder": "/home/node/game",
  "remoteUser": "node",
}

字符串
docker-compose.yml

version: "3.9"

services:
  game:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ..:/home/node/game
    ports:
      - "3000:3000"


Dockerfile

FROM node:20

WORKDIR /

ENV MY_VERSION=???

RUN some_command --argument $MY_VERSION

c6ubokkw

c6ubokkw1#

没有测试过,但你可以这样做:
将文件挂载为docket-compose.yml中的卷:

volumes:
    - local/file/version.txt:/version.txt

字符串
然后在Dockerfile中,您可以RUN some-command —version "$(cat /version.txt)"

nimxete2

nimxete22#

这就是我最终所做的:
docker-compose.yml中的上下文更改为项目根目录(此处为..,因为文件位于./.devcontainer/docker-compose.yml中)

build:
    context: ..
    dockerfile: .devcontainer/Dockerfile

字符串
然后在Dockerfile中可以使用COPY

COPY ./MY_VERSION.txt /MY_VERSION.txt

相关问题