# 基于 Alpine + JDK8 制作镜像

# 项目结构

# Dockerfile 文件内容

FROM alpine:latest
MAINTAINER ZHIXING<xxxxxxxx.com>

## java 应用工作目录
RUN mkdir /app
## 应用存放路径
RUN mkdir /app/application
## 日志存放目录
RUN mkdir /app/logs
## 配置文件存放目录
RUN mkdir /app/config
## 执行脚本
RUN mkdir /app/sh
## 默认执行脚本
COPY start.sh /app/sh/start.sh
## 空应用
COPY app.jar /app/application/app.jar
## 空配置
COPY application.properties /app/config/application.properties

## 添加 JDK 1.8 
ADD jdk1.8.0_191.tar.gz /usr/local

## 更换 alpine 源为 mirrors.ustc.edu.cn
RUN echo http://mirrors.ustc.edu.cn/alpine/v3.7/main > /etc/apk/repositories && \
  echo http://mirrors.ustc.edu.cn/alpine/v3.7/community >> /etc/apk/repositories
RUN apk update && apk upgrade

## Alpine 安装 Glibc
RUN wget -q -O /etc/apk/keys/sgerrand.rsa.pub https://alpine-pkgs.sgerrand.com/sgerrand.rsa.pub
RUN wget https://github.com/sgerrand/alpine-pkg-glibc/releases/download/2.31-r0/glibc-2.31-r0.apk
RUN apk add glibc-2.31-r0.apk

## 设置环境变量
ENV JAVA_HOME /usr/local/jdk1.8.0_191
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

ENV PATH $PATH:$JAVA_HOME/bin
## 执行脚本
CMD ["sh","/app/sh/start.sh"]

容器中的工作目录为 /app ,相关目录内容如下:

  • /app/application/ 关联外部 jar 文件
  • /app/config 关联指定配置文件 如: application.properties 等
  • /app/logs 存放程序运行日志
  • /app/sh 存放程序执行脚本

# Alpine 安装 Glibc 参考

alpine 默认库为 MUSL libc(mini libc) ,而 JDK 的运行需要 GUN Standard C library(glibc) 的库支持。所以需要安装 glibc

github 路径

# 执行案例

Eureka Server 高可用集群部署

精彩内容推送,请关注公众号!
最近更新时间: 5/28/2020, 3:15:50 PM