我试图将变量从docker build文件简单地传递到docker file,但是该变量从未解析
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从未解决
---编辑--- 原来我在文件中犯了几个错误,我在下面的回答中将包含正确的文件格式
答案 0 :(得分:2)
使用json数组格式时,and
和ENTRYPOINT
都不会解析变量。
如果您需要解析PORT,请使用入口点脚本或对CMD
使用shell形式表示法
ENTRYPOINT
答案 1 :(得分:0)
原来,我做错了几件事。对于docker compose文件,我进行了以下更改:
args
标签,因为它没有任何作用将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