docker——发布一个java应用程序
一、安装docker
使用docker之前,需要在物理机上安装docker。安装过程可参考docker官网,安装完成之后,运行docker。不同的操作系统,docker的安装和启动不同。
二、待发布的java程序说明
需要发布的java服务目录结构如下:
docker-test/
|-bin/
| |-server.sh
|-etc/
| |-config.edn
| |-logback.xml
|-target/
| |-docker-test.jar
| |-docker-test-standalone.jar
|-Dockerfile
Dockerfile
Dockerfile用来定义一个docker容器(container)的运行环境。
# 指定基础镜像openjdk8,用于运行java程序。
FROM openjdk:8
# 指定容器内的工作目录
WORKDIR /app/
# 将Dockerfile所在目录(docker-test)的bin目录复制到容器内(/app/bin/)
COPY bin bin
# 将docker-test目录下的etc目录复制到容器内(/app/etc/)
COPY etc etc
# 将target下以standalone.jar结尾的jar包复制到容器内的lib目录下(/app/lib/docker-test-standalone.jar).
COPY target/*standalone.jar lib/
# 将docker容器内的lib目录下的jar包名字写入到lib.txt(/app/lib.txt)
RUN ls lib/ > lib.txt
# 在docker容器内新建logs目录(/app/logs/)
RUN mkdir logs
# 将物理机时间时区挂在到容器中,这样容器时间与物理机系统时间一致
RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
server.sh
server.sh为java服务启动脚本,内容如下:
#!/bin/bash
## java服务启动日志记录文件在容器内的路径
LOGFILE=/app/logs/start.log
## 进入容器内的bin目录
cd /app/bin
## 从/app/lib.txt文件中读取要运行的jar文件。
JAR=$(cat ../lib.txt)
## 运行程序
java