Dockerfile - 使用 env 文件中的环境变量

Dockerfile - use environment variable from env file

我有一个 docker 组合设置,我想在我的 docker 文件中使用 env 文件中的环境变量。我想在构建期间使用这些变量,因为我使用此版本号连接字符串以形成下载 URL.

这里我写了一部分我正在使用的文件只是为了把重点放在我的问题上。

.env

MY_APP_VER=v1.2.3

docker-compose.yml

version: "2"
services:
  my-app:
    build: .
    container_name: my_app
    environment:
      - my_app_version=$MY_APP_VER

Docker 文件

FROM scratch
ENV my_app_ver=$my_app_version
RUN echo $my_app_ver

我检查了各种来源,但都没有成功。我不确定这是否可能,或者我是否使用了错误的语法(我应该使用引号还是不使用例如“$my_app_ver”或大括号 ${my_app_ver}).

docker-compose 中有一个名为 env-file 的选项,您可以利用它:https://docs.docker.com/compose/environment-variables/#the-env_file-configuration-option

version: "3"
services:
  my-app:
    build: .
    container_name: my_app
    env_file:
    - .env.dev

请注意,如果 .env 文件存在于当前上下文中,则它会默认加载。所以你只需要使用 env_file,如果它的名称不同或者在不同的文件夹中。

对于3.8版本,您可以通过以下方式进行

version: '3.8'

services:
  my-app:
    build: .
    ports:
      - ${CONTAINER_PORT}:${PORT} # for example
    env_file: .env
    container_name: my-app-${NODE_ENV} # for example
    environment: 
      MYSQL_DATABASE: ${DB_NAME} # for example
      my_app_version: ${MY_APP_VER} # for your case

documentation

中查找更多信息

此外,您可以在 Dockerfile 和 docker-compose here

中找到有关环境变量用法的更多信息