이 글의 내용은 Java 프로그램을 사용하여 Docker 이미지를 만드는 방법과 프로세스에 대한 것입니다. 이는 특정 참조 가치가 있으므로 도움이 필요한 친구에게 도움이 되길 바랍니다.
다음은 Docker 이미지 제작에 대한 몇 가지 요구 사항이며, 이를 수행하는 방법을 살펴보겠습니다.
생산 과정은 프로젝트 구성 과정에 통합되어야 합니다
공식 이미지를 기본 이미지로 사용
올바른 시간대를 설정하세요
컨테이너 안의 프로그램이 비로 시작됩니다 -root user
웹 프로그램의 인터페이스
를 지정하여 JVM 매개변수, Java 시스템 속성 및 프로그램 정의 매개변수를 전달할 수 있습니다.
위의 사항을 달성하는 방법에 대해 자세히 이야기해 보겠습니다.
Spotify의 dockerfile-maven-plugin은 사용하기 가장 간단하고 마스터하기 쉽기 때문에 사용을 권장합니다.
이 플러그인의 핵심은 Dockerfile을 작성한다는 것입니다(Dockerfile의 구체적인 작성 방법은 공식 문서를 참조하세요). 이 플러그인은 Docker 이미지를 구축하는 데 도움이 되는 몇 가지 매개변수를 전달합니다.
Dockerfile을 작성할 수 있는 한 이 플러그인은 추가 개념을 추가하지 않습니다.
Java의 기본 이미지는 오래된 Java 저장소가 아닌 openjdk 저장소에서 찾아야 합니다.
openjdk 저장소는 눈부시게 보이는 다양한 이미지 태그를 제공하지만 기본적으로는 몇 가지만 있습니다.
openjdk:<version>
openjdk:<version>-slim
openjdk: <version>-alpine
<version>
정보 일반적으로 더 큰 버전 번호를 지정하면 됩니다. 예를 들어 Dockerfile에 다음과 같이 작성할 수 있습니다. <version>
一般来说指定大版本号就行了,比如你可以在Dockerfile这样写:
FROM openjdk:8-alpine
从尺寸上来讲,alpine最小、slim稍大、默认的最大。所以应该尽可能的使用alpine版本的,如果发现程序的运行环境缺少某些东西,那么尝试用slim版本或者默认版本。就目前的经验来讲:
如果需要操作系统字体库,那么就得使用slim版本或者默认版本。需要操作系统字体库的程序例如:图片验证码、PDF导出。
如果需要某些Linux标准的动态/静态连接库,那么在alpine版本不行的情况下,尝试slim版本或默认版本。因为alpine版本是一个及其精简的Linux,它删除了很多东西。
几乎所有的Docker Image的时区都是UTC,我们需要给我们自己制作的Docker Image设定时区:
ENV TZ=Asia/Shanghai RUN set -eux; \ ln -snf /usr/share/zoneinfo/$TZ /etc/localtime; \ echo $TZ > /etc/timezone
在Docker Image内部,我们应该使用非root用户启动程序,这需要使用到gosu。
gosu的Dockerfile指南在这里。
记得要根据不同的基础Image选择适合的安装方式。
对于联网应用而言,必须在Dockerfile中指定暴露的端口,否则该端口无法映射。
EXPOSE 8080
我们需要能够在启动Docker Image的时候将一些参数传递进去:
JVM参数
Java System Properties
程序启动参数
这里就需要参考Dockerfile best practice和Docker ENTRYPOINT了。
样例项目源代码在这里:https://github.com/chanjarster/dockerfile-examples/
所有与程序相关的东西都存放在/home/java-app/
下:
/home/java-app ├── docker-entrypoint.sh ├── lib │ └── java-app.jar ├── etc ├── logs └── tmp
docker-entrypoint.sh,启动脚本
lib,存放JAR包
lib/java-app.jar,程序JAR包
etc,存放配置文件
logs,存放日志文件
tmp,存放临时文件
mvn clean package dockerfile:build
普通启动,然后访问http://localhost:8080
:
docker run -p 8080:8080 chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT
设定JVM参数,使用JVM_OPTS
环境变量:
docker run -p 8080:8080 -e JVM_OPTS='-Xmx128M -Xms128M' chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT
设定System Properties,使用JAVA_ARGS
docker run -p 8080:8080 -e JAVA_ARGS='-Dabc=xyz -Ddef=uvw' chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT
docker run -p 8080:8080 chanjarster/dockerfile-java-examples-1:1.0-SNAPSHOT --debug
/home/에 저장됩니다. -app/
: 🎜rrreee🎜docker-entrypoint.sh, 시작 스크립트 🎜🎜lib, JAR 패키지 저장 🎜🎜lib/java-app.jar, 프로그램 JAR 패키지 🎜🎜etc, 구성 파일 🎜🎜 로그 저장, 로그 파일 저장🎜🎜tmp, 임시 파일 저장🎜🎜이미지 빌드 방법🎜rrreee🎜Run🎜🎜정상적인 시작 후 http://localhost:8080
방문:🎜rrreee🎜JVM 매개변수 설정, 사용 JVM_OPTS
환경 변수: 🎜rrreee🎜시스템 속성 설정, JAVA_ARGS
환경 변수 사용: 🎜rrreee🎜 프로그램 실행 매개변수 제공, 나중에 직접 추가하기: 🎜 rrreee위 내용은 Java 프로그램을 이용하여 Docker 이미지를 만드는 방법 및 과정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!