从申请服务器到Docker部署Java项目至最后运行完结

news/2024/12/22 23:02:27/

目录

1.申请服务器篇

2.配置安全组篇

3.Docker安装篇

4.代码编写打包篇

目录结构

Maven

Controller

DockerFile

开始打包

5.所需文件上传及镜像构建篇

上传准备

上传jar包及DockerFile文件

指令构建

验证

6.镜像启动服务验证篇

启动镜像

使用云服务器地址进行接口访问

2023/11/16更新

1.安装mysql容器

2.安装完成之后查看

3.启动容器

4.运行mysql容器

5.开启远程访问权限

6.重新打包

7.总结

8.补充



1.申请服务器篇

www.qingcloud.com

创建新的

参数选择

点击创建主机

2.配置安全组篇

说白了:让你的端口让服务器通过

3.Docker安装篇

本机通过FinalShell连接远程服务器

依次执行下面命令

1.初始化
yum install -y yum-utils
2.安装docker基础环境
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3. 安装docker脚手架
yum install -y docker-ce docker-ce-cli containerd.io
4.默认启动
systemctl enable docker --now
5.验证安装是否成功
docker ps

安装成功后执行docker ps

当前运行的镜像:会出现以下界面,证明安装成功

镜像加速,进入下面的网址复制粘贴运行
阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台

4.代码编写打包篇

新建一个springboot应用,使用idea随便写个请求接口

目录结构

Maven

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.3</version></dependency></dependencies>

Controller

package com.zsp.docker.controller;import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController
public class CounterController {@Resourceprivate RedisTemplate<String, String> redisTemplate;@GetMapping("hello")public String count() {Long in = redisTemplate.opsForValue().increment("count");return "有{" + in + "}人访问了这个页面";}
}

DockerFile

#基础环境
FROM openjdk:8-jdk-slim
#作者
LABEL maintainer=zhangshipeng
#将target下的以jar为后缀的文件复制给app.jar
COPY target/*.jar   /app.jar
#执行java -jar 命令
ENTRYPOINT ["java","-jar","app.jar"]

开始打包

5.所需文件上传及镜像构建篇

上传准备

新建一个文件夹,内容为DockerFile和target,target里面只放打包后的jar包

上传jar包及DockerFile文件

通过FinalShell进行文件上传,我在云服务器上新建了名为dockerfile的文件夹,将这两个内容放进了这里

很重要这一步,因为我们编写的dockerFile文件中是从target文件夹中把jar包取出来的,所以要保持一致。

指令构建

进入该文件夹,执行构建指令   docker build -t java-docker:v1.0 .

构建指令最后的点不要忘记

docker build 指令是前置, -t 指定构建的名字

验证

构建完,docker images,查看是否成功

6.镜像启动服务验证篇

启动镜像

docker run -d -p 8080:8080 java-docker:v1.0

java-docker:v1.0:在构建时命名的名字

使用云服务器地址进行接口访问


2023/11/16更新

这次增加后台数据库访问及docker安装mysql,远程连接部署等

1.安装mysql容器

在命令行输入 docker pull mysql:8

[root@localhost ~]# docker pull mysql:8

2.安装完成之后查看

docker images

3.启动容器

docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=zsp123456 --name mysql --restart=always -v /root/data:/var/lib/mysql -d mysql:8.0

-p设置端口映射

-e设置密码

-name设置名字

restart=always 设置容器自启动

-v 数据卷挂载  -v (参数一):(参数二) 

持久化数据到宿主机,容器存储数据的路径在哪?/var/lib/mysql

参数一:把数据存到哪里

参数二:要存储的数据在哪里

运行之后会自动创建一个名为data的目录。

4.运行mysql容器

docker ps 查看mysql运行的id,id为2d81960dc52a 

运行以下命令

docker exec -it 0c55686eeb36 bash

mysql -u root -p 

Enter password: root

5.开启远程访问权限

mysql8.0需要修改东西,依次执行下面步骤

1.给root用户分配远程访问权限

mysql> GRANT ALL PRIVILEGES ON *.* TO root@'%' WITH GRANT OPTION;

2.更换密码加密方式

mysql> ALTER USER 'root'@'%' IDENTIFIED BY 'zsp123456' PASSWORD EXPIRE NEVER;

3.更新用户密码

ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'zsp123456';

4.刷新权限

FLUSH PRIVILEGES;

6.重新打包

1.修改原来项目的配置文件,mysql地址改为服务器地址

2.账户密码都是服务器中mysql容器的账户密码

3.重新执行package,上传jar包和DockerFile文件进行构建

4.运行构建好的容器

5.postman测试接口

7.总结

启动mysql,开启端口映射(3306)指定用户名密码后台运行,在docker重启之后自动运行,设置数据卷,持久化数据到宿主机。

8.补充

常用容器操作命令:

查看运行的容器 docker ps

关闭运行的容器  docker stop [CONTAINER ID]

常用镜像操作命令:

查看镜像 docker images

启动镜像 docker run 后面补充其他条件

删除镜像 docker rmi REPOSITORY:TAG 


http://www.ppmy.cn/news/1222662.html

相关文章

【MySQL8】1130 - Host *** is not allowed to connect to this MySOL server

问题描述 使用 Navicat 连接 MySQL8 报错&#xff1a; 1130 - Host *** is not allowed to connect to this MySOL server解决方案 use mysql;select host ,user from user; -- 将 root 用户的主机&#xff08;host&#xff09;值修改为 %&#xff0c;即允许从任何主机连接 …

mindspore mindyolo目标检测华为昇腾上推理使用、训练;华为OBS文件传输使用

参考&#xff1a; https://github.com/mindspore-lab/mindyolo 使用案例&#xff1a; https://github.com/mindspore-lab/mindyolo/blob/master/GETTING_STARTED.md 安装&#xff1a; pip install mindyolo特别注意opencv-python、opencv-python-headless版本问题&#xff0…

局部指令和全局指令的注册和使用

全局指令 先写一个js文件 import store from /store const directivePlugin {install(Vue) {Vue.directive(checkBtn, {inserted(el, binding) {// el: 指令绑定的那个元素对象 dom// binding.value: 指令等于号后面绑定的表达式的值 v-if"xxx"// 拿到el 拿到v…

C++静态成员友元命名空间介绍

定义 静态成员&#xff1a;静态成员是类的成员&#xff0c;它们在类定义中声明&#xff0c;但与类的实例无关。它们可以通过类名和静态成员函数访问&#xff0c;而不是通过类的实例。静态成员可以是数据成员&#xff08;变量&#xff09;或函数成员&#xff08;函数&#xff0…

java Stream操作

java stream操作 Stream是什么 Stream又称为流&#xff0c;可以将集合转换为一种流&#xff0c;对集合中的每个元素进行一系列的流式操作&#xff0c;流并不存储元素&#xff0c;对流的操作也不会修改数据源 数据源 ------转换为--》流----》进行中间操作----》终止操作 多个中…

2311rust到31版本更新

1.27.1稳定版 在此修补程序前,下例在编译器内部恐慌. fn main() {let a vec!["".to_string()];a.iter().enumerate().take_while(|(_, &t)| false).collect::<Vec<_>>(); }1.27.1拒绝上述代码,并显示以下错误消息: error[E0507]: cannot move ou…

【Gateway】基于ruoyi-cloud-plus项目,gateway局部过滤器和过滤返回以及集成nacos

1.使用Gateway路由转发 1.1标题引入依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency>1.2添加YML配置 spring:cloud:gateway:# 打印请求日志(自定义)…

使用requests库设置no_proxy选项的方法

问题背景 在使用requests库进行HTTP请求时&#xff0c;如果需要使用爬虫IP服务器&#xff0c;可以通过设置proxies参数来实现。proxies参数是一个字典&#xff0c;其中包含了爬虫IP服务器的地址和端口号。然而&#xff0c;当前的requests库并不支持通过proxies参数来设置no_pr…