Docker部署手册

  1. Dockerfile编写

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    #使用jdk1.8作为基础镜像
    FROM openjdk:8-jdk-alpine

    MAINTAINER Leslie hwangxiaosi@gmail.com

    #挂载/tmp目录存储宿主机的jar包与证书文件
    VOLUME /tmp

    #将jar包上传至/tmp目录下并改名为app.jar
    ADD spi_ldap_api-1.0-SNAPSHOT.jar /tmp/app.jar

    #将证书文件上传至/tmp目录下
    ADD AD-CA.cer /tmp

    #更改默认时区为中国,不改会导致Log文件记录时间出错
    RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

    #使用Java自带的Keytool将证书上传至秘钥库
    #$JAVA_HOME:系统环境变量 ->> /usr/lib/jvm/java-1.8-openjdk
    RUN $JAVA_HOME/bin/keytool -noprompt -import -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -keypass changeit -alias AD-CA -file /tmp/AD-CA.cer

    #将AD域服务器IP指向AD证书分发的域名
    #注:Dockerfile更改host会不生效,需要在运行创建容器时指向--add-host=SPIGUADCTEST01.spitest.com:192.168.1.46,若证书域名已配置DNS解析可不使用该命令启动
    #RUN echo "192.168.1.244 SPIGUAWDC101.GZ-SPI.COM" >> /etc/hosts

    #运行jar包命令,参数"-Djavax.net.ssl.trustStorePassword=changeit"的含义是证书导入的密码,若不添加该参数会导致无法连接到ad服务器
    ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-Djavax.net.ssl.trustStorePassword=changeit","-jar","/tmp/app.jar"]
  2. 构建镜像
    先将DockerfileAD-CA.cer证书以及项目编译好的jar包放在同一目录下。

在Dockerfile文件的目录下执行docker build命令构建镜像,命令如下:

1
2
#x代表当前版本号,构建镜像前需要看看当前服务器使用的版本是否以及生成镜像
docker build -t spi_ldap_api:v1.x .

构建成功会显示Successfully tagged spi_ldap_api:v1.x

  1. 启动命令
    1
    docker run -d --restart=always --name=spi-ldap-api -v /var/log/spi-ldap-api/:/logs -p 8001:8001 spi_ldap_api:vx.x.x