• 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
  • 相关阅读:
    AcWiing 翻硬币
    AcWing 飞行员兄弟 二进制枚举
    AcWing 费解的开关 二进制枚举
    vue发送短信逻辑
    使用celery异步发送短信
    celery配置与基本使用
    celery原理与组件
    短信验证接口
    图片验证码接口
    编写注册接口
  • 原文地址:https://www.cnblogs.com/hutao722/p/9670482.html
Copyright © 2020-2023  润新知