首页 > 解决方案 > 将变量从 docker build 文件传递​​到 docker 文件

问题描述

我试图将变量简单地从 docker build 文件传递​​给 docker 文件,但是该变量永远不会被解析

version: '3'
services:
    movie-discovery-server:
        container_name: movie-discovery-server
        build:
            args:
              PORT: 8761
            context: /Users/admin/Downloads/movie-discovery-server
            dockerfile: Dockerfile
        image: movie-discovery-server:latest
        environment:
          - PORT=8761
        expose:
            - 8761

这是 Dockerfile

FROM openjdk:8
ADD ./target/movie-discovery-server-0.0.1-SNAPSHOT.jar movie-discovery-server-0.0.1-SNAPSHOT.jar
ARG PORT
ENTRYPOINT ["java", "-jar", "movie-discovery-server-0.0.1-SNAPSHOT.jar", "--server.port=$PORT"]

但是 $PORT 从未解决

---编辑---原来我在我的文件中犯了几个错误,我下面的答案将包含正确的文件格式

标签: dockerdocker-composedockerfile

解决方案


使用 json 数组格式时,也不会解析变量ENTRYPOINTCMD

如果您需要解析 PORT,请使用入口点脚本或使用 shell 格式表示法ENTRYPOINT

ENTRYPOINT java -jar movie-discovery-server-0.0.1-SNAPSHOT.jar --server.port=$PORT

推荐阅读