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

news2024/11/16 0:48:44

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1947890.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SQL-REGEX-常见正则表达式的使用

SQL-REGEX-常见正则表达式的使用 在SQL中&#xff0c;正则表达式&#xff08;Regex&#xff09;的使用可以帮助进行更灵活和精确的模式匹配和数据筛选。不同的数据库管理系统对于正则表达式的支持略有差异&#xff0c;但大体都是相似的。 Tips&#xff1a; 模式描述匹配内容…

优选算法之前缀和(上)

目录 一、【模板】一维前缀和 1.题目链接&#xff1a;DP34【模板】前缀和 2.题目描述&#xff1a; 3.解法&#xff08;前缀和&#xff09; &#x1f343;算法思路&#xff1a; &#x1f343;算法代码&#xff1a; 二、【模板】二维前缀和 1.题目链接&#xff1a;DP35【…

海外短剧CPS分销推广系统平台源码搭建方案介绍

随着全球内容消费市场的日益繁荣&#xff0c;短剧作为一种新兴的娱乐形式&#xff0c;正在迅速赢得全球观众的喜爱。特别是当国内短剧以其独特的创意和精湛的制作技艺&#xff0c;吸引了大量海外观众的关注时&#xff0c;短剧出海成为了国内影视行业的一大趋势。接下来为大家介…

HarmonyOS三方库的使用

系统组件难以提供比较优秀的界面&#xff0c;需要第三方库来实现一些比较好看的界面效果 三方库的获取&#xff1a; 开源社区支持OpenHarmony-TPC 和 Openharmony三方库中心仓 先目前已经拥有各种各样的三方库&#xff0c;包括UI 图片 动画 网络 数据存储 工具类 多媒体 安全等…

Cookie与Session 实现登录操作

Cookie Cookie 是网络编程中使用最广泛的一项技术&#xff0c;主要用于辨识用户身份。 客户端&#xff08;浏览器&#xff09;与网站服务端通讯的过程如下图所示&#xff1a; 从图中看&#xff0c;服务端既要返回 Cookie 给客户端&#xff0c;也要读取客户端提交的 Cookie。所…

Android开发中使用Base64类库进行密码加密报错解决

在对密码加密采用sdk自带类库Base64加密时&#xff0c;函数可跳转&#xff0c;能够索引到类函数位置&#xff0c;但是运行出现报错。 使用情况&#xff1a; 引用&#xff1a;import java.util.Base64; 调用&#xff1a;String decode new String(Base64.getEncoder().encod…

实战练习之Linux上实现shell脚本自动化编程

实验拓扑要求 主机环境描述 注意&#xff1a; 172.25.250.101-172.25.250.105 共 5 个 IP 地址由servera.exam.com服务器进行提供。172.25.250.106 由 serverb.exam.com 服务器进行提供。 需求描述 1. 172.25.250.101 主机上的 Web 服务要求提供 www.exam.com Web站点&#…

模拟ADG主库归档文件丢失,备库出现gap(增量备份解决)

文章目录 一、说明二、环境信息2.1.主备库环境信息2.2.检查主备是否同步正常 三、模拟日志断档3.1.模拟主库归档文件丢失3.2 查看主库状态出现GAP 四、RMAN增量备份恢复备库同步4.1 RMAN增量恢复备库4.2 开启备库redo同步4.3 主备库验证同步 一、说明 模拟Oracle主库归档文件丢…

C++图书管理系统

目录 实现功能 用户管理 图书管理 借阅与归还 未归还图书 部分效果图 结构体 Book 结构体 User 结构体 源代码 编译时在连接器命令行加入 完整代码 实现功能 用户管理 添加用户&#xff1a;输入用户ID、用户名和密码…

简单的git分支mergepush权限设定

简单的git分支merge&push权限设定 1. 需求 公司的分支很多&#xff0c;主要的有master分支&#xff0c;很多的业务需求分支&#xff0c;开发测试分支(uat,uat2,sit,sit2)&#xff0c;这些分支当前是谁都可以进行提交&#xff0c;但是如果在分支上直接修改&#xff0c;或者…

3.1、数据结构-线性表

数据结构 数据结构线性结构线性表顺序存储和链式存储区别单链表的插入和删除练习题 栈和队列练习题 串&#xff08;了解&#xff09; 数据结构 数据结构该章节非常重要&#xff0c;上午每年都会考10-12分选择题下午一个大题 什么叫数据结构&#xff1f;我们首先来理解一下什…

如何查找下载安装安卓APK历史版本?

在安卓设备上&#xff0c;有时候我们可能希望安装某个软件的旧版本&#xff0c;可能是因为新版本不兼容、功能改变不符合需求或是其他原因。 安卓系统并不像iOS那样提供直观的历史版本下载界面。 不过&#xff0c;通过一些第三方市场和网站&#xff0c;我们仍然可以找到并安装…

通信原理实验六:实验测验

实验六 实验测验 一&#xff1a;测验内容和要求 测试需要完成以下几个步骤&#xff1a; 配置好以下网络图&#xff1b;占总分10%&#xff08;缺少一个扣一分&#xff09;根据下面图配置好对应的IP和网关以及路由等相关配置&#xff0c;保证设备之间连通正常&#xff1b;占总…

数据结构经典测试题4

1. #include <stdio.h> int main() { char *str[3] {"stra", "strb", "strc"}; char *p str[0]; int i 0; while(i < 3) { printf("%s ",p); i; } return 0; }上述代码运行结果是什么&#xff1f; A: stra strb strc B: s…

前端面试宝典【Javascript篇】【2】

欢迎来到《前端面试宝典》&#xff0c;这里是你通往互联网大厂的专属通道&#xff0c;专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习&#xff0c;无论是一线大厂还是初创企业的面试&#xff0c;都能自信满满地展现你的实力。 核心特色&#xff1a; 独家实战案例…

Flink之重启策略

目录 1、固定延迟重启策略 2、失败率重启策略 3、不重启策略 在设置完 CheckPoint() 检查点机制后&#xff0c;不设置重启策略的话&#xff0c;&#xff0c;可以无限重启程序&#xff0c;那么设置的检查点机制也就没有什么意义了。因此&#xff0c;在生产实践中&#xff0c;…

笔记本检测工具 | 爱回收笔记本质检系统 v1.9.6

软件简介 爱回收笔记本质检系统是一款专为笔记本电脑硬件检测而设计的软件。它以其快速的检测速度、简便的操作流程和直观的检测结果&#xff0c;为用户提供了一种高效、易懂的硬件检测解决方案。 这款软件不仅适用于对电脑硬件有一定了解的用户&#xff0c;也特别适合对硬件…

Sentinel隔离、降级、授权规则详解

文章目录 Feign整合Sentinel线程隔离熔断降级授权规则自定义异常结果 上一期教程讲解了 Sentinel 的限流规则&#xff1a; Sentinel限流规则&#xff0c;这一期主要讲述 Sentinel 的 隔离、降级和授权规则 虽然限流可以尽量避免因高并发而引起的服务故障&#xff0c;但服务还…

【玩转C语言】第五讲--->数组-->一维和多维深度理解

&#x1f525;博客主页&#x1f525;&#xff1a;【 坊钰_CSDN博客 】 欢迎各位点赞&#x1f44d;评论✍收藏⭐ 引言&#xff1a; 大家好&#xff0c;我是坊钰&#xff0c;为了让大家深入了解C语言&#xff0c;我开创了【玩转C语言系列】&#xff0c;将为大家介绍C语言相关知识…

你还在为文件翻译烦恼吗?试试这四款神器,轻松搞定一切!

现如今的信息传播速度不断得加快&#xff0c;无论是中外交流还是学习&#xff0c;也越来越多小语种出现在我们的工作和生活当中来了&#xff0c;其中不伐一些文件批量的形式&#xff0c;所以今天就具体来探讨一下&#xff0c;关于文件翻译的四款辅助工具&#xff1a; 一、福昕在…