从0到1使用Docker部署java项目详解

Docker部署Java项目相比传统部署方式,在环境一致性、配置管理、可扩展性和安全性等方面具有显著优势。然而,它也带来了学习成本、资源消耗和复杂度增加等挑战。

云服务器

白嫖阿里云服务

通过免费试用方式获取自己的阿里云服务器。当然,如果你条件允许,也可以直接选择购买一个服务器。
入口:
image.png
个人免费试用:
image.png

云服务设置

操作系统:Alibaba Cloud Linux 3.2104 LTS 64位
设置密码:首先,需要通过具连接到服务器,连接方式包括密码连接,密钥等方式。密码方式比较简单。
公网IP:对外IP地址
image.png

连接服务器

连接工具:因为xshell付费产品,选择开源的Tabby作为连接工具
新建配置,选择SSH连接,配置云服务公网ip,用户名及密码。
image.png
image.png
image.png
image.png

安装docker环境

下载安装:

配置阿里云镜像资源,加速下载,安装docker

# 配置阿里云镜像资源,加速下载
yum-config-manager --add-rep https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum install -y docker-ce

执行命令后:
image.png
安装完成:
image.png

启动docker

启动docekr,通过查看docker版本

service docker start

#查看版本
docker --version

image.png
设置开机自启

systemctl enable docker.service
镜像加速配置

国内从DockerHub拉取镜像有时会遇到困难,此时可以配置镜像加速器。
Docker官方和国内很多云服务商都提供了国内加速器服务,建议根据运行docker的云平台选择对应的镜像加速服务。
下面列出国内常用的加速站点,排名不分先后,总体来说阿里云速度较稳定。
docker中国区官方镜像加速:https://registry.docker-cn.com
网易镜像加速:http://hub-mirror.c.163.com
中国科技大学镜像加速:https://docker.mirrors.ustc.edu.cn
腾讯云镜像加速:https://mirror.ccs.tencentyun.com
阿里云镜像加速:https://ung2thfc.mirror.aliyuncs.com
修改daemon配置文件/etc/docker/daemon.json来使用加速器

vi /etc/docker/daemon.json

{
"registry-mirrors": [
  "https://ung2thfc.mirror.aliyuncs.com",
  "https://mirror.ccs.tencentyun.com",
  "https://registry.docker-cn.com",
  "http://hub-mirror.c.163.com",
  "https://docker.mirrors.ustc.edu.cn"],
  "live-restore": true
}

image.png

加载重启docker
systemctl daemon-reload

systemctl restart docker

检查是否生效

docker info

image.png
image.png

安装docker compose
curl -L https://github.com/docker/compose/releases/download/1.28.6/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

image.png
将可执行权限应用域二进制文件

#给他一个执行权限
chmod +x /usr/local/bin/docker-compose

查看安装版本

#查看是否安装成功
docker-compose -version

image.png

java项目打包

源码

SpringBoot项目docker-demo-service源码:
https://gitee.com/xmhzzz/micro-practice/tree/master/docker-demo-service
项目环境:jdk17 SpringBoot3.0.2

maven打包

项目maven打包配置spring-boot-maven-plugin:

<build>
  <finalName>docker-demo-service</finalName>
  <plugins>
    <plugin>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-maven-plugin</artifactId>
      <version>${spring-boot.version}</version>
      <configuration>
        <mainClass>com.gitee.xmhzzz.docker.demo.service.DockerDemoServiceApplication</mainClass>
        <layout>JAR</layout>
      </configuration>
      <executions>
        <execution>
          <id>repackage</id>
          <goals>
            <goal>repackage</goal>
          </goals>
        </execution>
      </executions>
    </plugin>
  </plugins>
</build>

idea工具maven打包:
image.png
docker-demo-service.jar

Dockerfile

编写Dockerfile文件

FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/java:17-anolis

WORKDIR /demo-service

ARG JAR_FILE=target/docker-demo-service.jar

COPY ${JAR_FILE} app.jar

EXPOSE 8003

ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms128m -Xmx256m -Dspring.profiles.active=test"

CMD sleep 60; java $JAVA_OPTS -jar app.jar

构建images

上传jar包和Dockerfile

在root下新建文件夹target

mkdir target

使用Tabby的SFTP上传jar包到target目录
image.png
在root下上传Dockerfile文件
image.png

创建镜像

利用Dockerfile文件创建镜像 docker build -t demo . (别漏了有个“.”) demo 为自己设置的镜像名字,自定义选择

docker build -t demo . 

image.png
查看镜像

docker images

image.png

运行项目

运行镜像

 docker run -d -p 8003:8003 --name demo  demo:latest

查看运行的实例

docker ps -a

image.png
查看Docker运行日志

docker logs -f demo

image.png
入容器的命令行界面

docker exec -it demo  /bin/bash

image.png
查看SpringBoot项目日志

退回上一级
cd ..
查看日志
tail -100f data/logs/docker-demo-service/info/info.log

退出容器的命令行界面

exit

image.png

  • 28
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

后端马农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值