将变量从docker构建文件传递到docker文件

问题描述 投票:0回答:2

我试图将一个变量简单地从docker构建文件传递给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永远不会被解决

---编辑---事实证明我在我的文件中犯了几个错误,我的答案将包含正确的文件格式

docker docker-compose dockerfile
2个回答
2
投票

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

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

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

0
投票

原来我以错误的方式做了几件事。对于docker compose文件,我引入了以下更改:

  1. 删除了args标签,因为它没有任何效果
  2. expose标记替换为ports标记,因为映射无法正常工作 version: '3' services: movie-discovery-server: container_name: movie-discovery-server build: context: /Users/admin/Downloads/movie-discovery-server dockerfile: Dockerfile image: movie-discovery-server:latest ports: - "8761:8761" environment: - PORT=8761

对于DockerFile,我已经应用了@codestation的建议并放弃了JSON格式

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
© www.soinside.com 2019 - 2024. All rights reserved.