Docker应用系列(四)| 部署java应用

本示例基于Centos 7,假设目前使用的账号为release,拥有sudo权限。

由于Docker官方镜像下载较慢,可以开启阿里云的Docker镜像下载加速器,可参考此文进行配置。

主机上服务安装步骤如下:

1. 安装docker服务:

 sudo yum install -y docker

2. 启动docker服务: 

sudo service docker start

3. 查找centos镜像:

sudo docker search centos

4. 下载官方centos镜像:

sudo  docker pull docker.io/centos

5. 下载完后可检查镜像:

sudo docker images 

6. 在主机上创建具备java和unzip功能的centos镜像:

mkdir ~/centos-java
cd ~/centos-java
touch Dockerfile
vi Dockerfile
#内容如下:
from docker.io/centos:latest
run yum install -y java
run yum install -y unzip

创建好Dockerfile后,我们build这个镜像:

cd ~/centos-java

sudo docker build -t centos/java:latest .

build成功后,可通过如下命令查看最新的镜像列表:

sudo docker images

7. 我们各个java应用(假定都为.zip格式的打包文件,不依赖于web服务器),都将基于该镜像上,创建新的应用镜像。

mkdir ~/myapp
cd ~/myapp
touch Dockerfile
vi Dockerfile
#内容如下:
from centos/java:latest
run mkdir -p /opt/myapp
copy myapp.zip /opt/myapp
run unzip /opt/myapp/myapp.zip -d /opt/myapp
run chmod +x /opt/myapp/startup.sh
expose 8080
cmd ["/opt/driver2/startup.sh"]

内容说明:

  • myapp.zip 是我们的java应用,需要你准备好放在~/myapp目录下,该文件会被拷入新镜像中的/opt/myapp目录下
  • startup.sh脚本参考内容为:
#!/bin/sh  
cd /opt/myapp
java -server -Xmx2g -Xms2g -cp .:myapp-1.0.jar:./lib/* com.yourcompany.Application 
  • 需要注意的是java以前台方式运行,不要以后台方式(nohup)运行,否则docker容器启动后很快就会停止
  • 另外假定你的应用的输出日志为 /var/log/myapp下

创建好Dockerfile后,build新镜像:

cd ~/myapp

sudo docker build -t myapp:latest .

build成功后,就可以得到一个名称为myapp的新镜像

8. 运行新镜像:

sudo mkdir -p /var/log/myapp
sudo docker run -p 8080:8080  -v /var/log/myapp/:/var/log/myapp -v /etc/localtime:/etc/localtime:ro --name myapp -d myapp 

命令说明:

-v /etc/localtime:/etc/localtime:ro的目的是为了使容器时间与主机时间同步一致 

9. 检查容器启动情况:

容器的状态应该为Up,可执行如下观察:

sudo docker ps

若未能起来,我们可以观察日志,了解出错原因:

sudo docker logs 容器id

当然,成功起来后,可以在主机的目录下查看日志以方便跟踪:

tail -f -n 500 /var/log/myapp/app.log
原文地址:https://www.cnblogs.com/hutao722/p/9670482.html