Dockerfile

138 阅读1分钟

1. 基础镜像模板

  • 基于 centos 镜像
  • 生成 base 镜像

Spring Cloud或Dubbo应用的Dockerfile示例(基于JAR包)

FROM centos:7.9.2009
MAINTAINER:ByAdmin

# 安装基础软件
RUN yum install -y epel-release \
&& yum -y install wget unzip telnet vim lsof net-tools bind-utils \
&& yum clean all


# 增加容器内中⽂支持。
ENV LANG="en_US.UTF-8"

# 增强Webshell使⽤体验。
ENV TERM=xterm

2. JDK 镜像模板

  • 基于 base 镜像
  • 生成 JDK 镜像
FROM centos:base
MAINTAINER:ByAdmin

# 准备 JDK 系统变量
ENV JAVA_HOME /usr/java/latest
ENV PATH $PATH:$JAVA_HOME/bin
ENV ADMIN_HOME /home/admin

RUN yum -y install kde-l10n-Chinese glibc-common \
&& yum -y install java-1.8.0-openjdk-devel

3. 业务镜像模板

  • 基于 JDK 镜像
  • 生成业务启动镜像
FROM maven:3.6-jdk-8-alpine AS build

WORKDIR /

RUN git clone http://gitlab.com/[git_repo]/[java_project].git \
    && mvn clean package -Dmaven.test.skip=true

FROM openjdk:8u342-jdk-buster
ADD http://repo.example.com/dd-java-agent-1.11.0-SNAPSHOT.jar /ddtrace-agent/

COPY --from=build /[java_project]/target/*.jar /

CMD ["java", \
    "-XX:MinRAMPercentage=75.0", \
    "-XX:MaxRAMPercentage=75.0", \
    "-XX:InitialRAMPercentage=75.0", \
    "-XX:MetaspaceSize=512M", \
    "-XX:MaxMetaspaceSize=512M", \
    "-XX:+UnlockExperimentalVMOptions", \
    "-XX:+UseCGroupMemoryLimitForHeap", \
    "-XX:+HeapDumpBeforeFullGC", \
    "-XX:+HeapDumpAfterFullGC", \
    "-XX:HeapDumpPath=/dump", \
    "-XX:-UseAdaptiveSizePolicy", \
    "-javaagent:/ddtrace-agent/dd-java-agent-1.11.0-SNAPSHOT.jar", \
    "-Ddd.service.name=[java_project]", \
    "-Ddd.env=prod", \
    "-Ddd.version=v0.0.1", \
    "-Ddd.agent.port=9529", \
    "-Ddd.agent.host=192.168.30.32", \
    "-Ddd.jmxfetch.check-period=1000", \
    "-Ddd.jmxfetch.statsd.host=192.168.30.32", \
    "-Ddd.jmxfetch.statsd.port=8125", \
    "-Ddd.service.mapping=redis:redis_QD,mysql:mysql_QD,mongo:mongo_QD", \
    "-Duser.timezone=Asia/Shanghai", \
    "-jar", \
    "/[java_project]-SNAPSHOT.jar"]