docker部署SpringBoot项目

文章目录

  • 1. docker环境
    • 1.1 docker安装
    • 1.2 docker Web管理工具
    • 1.3 docker网络
      • 1.3.1 网络说明
      • 1.3.2 创建指定网关的网络
  • 2. docker安装软件
    • 2.1 安装nginx
    • 2.2 安装redis
    • 2.3 安装mysql
    • 2.4 部署springboot程序
      • 2.4.1 编写dockerfile
      • 2.4.2 构建镜像
      • 2.4.3 启动镜像

1. docker环境

1.1 docker安装

#CentOS 6
rpm -iUvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum update -y
yum -y install docker-io
service docker start
chkconfig docker on#CentOS 7、Debian、Ubuntu
curl -sSL https://get.docker.com/ | sh
systemctl start docker
systemctl enable docker.service

1.2 docker Web管理工具

#创建文件夹
mkdir -p /docker/portainer/{data,public}#中文汉化
#注意安装前不要导入汉化包,否则无法注册。
https://www.quchao.net/Portainer-CN.html# 运行
docker run -d -p 9000:9000 --restart=always \
-v /var/run/docker.sock:/var/run/docker.sock \
--privileged=true \
portainer/portainer-ce# 初始化登录地址
http://192.168.80.250:9000admin
111111111111  (12位)

1.3 docker网络

1.3.1 网络说明

首先,我们需要创建一个自定义的网络,这样我们才可以使用Docker为容器分配固定IP。可以使用下面的命令来创建自定义网络:
如果只使用docker network create pub_network创建网络,则容器启动时,会自动分配动态的IP地址和网关。

docker network create --subnet=192.168.0.0/16 pub_network

这个命令将创建名为“mynet”的网络,并指定它的子网为“192.168.0.0/16”。
接下来,我们需要为需要分配固定IP的容器指定IP地址。可以使用下面的命令来启动一个容器,并为它分配固定IP:

docker run --name=ubuntu --net=pub_network --ip=192.168.0.101 -itd ubuntu:latest

这个命令将启动一个名为“ubuntu”的容器,并将它加入到自定义网络“mynet”中。同时,它还为这个容器分配了固定IP地址“192.168.0.101”。
现在,我们可以验证容器的IP地址是否生效。可以使用下面的命令来查看容器的IP地址:

docker inspect ubuntu | grep IPAddress

这个命令将输出包含容器IP地址的行,从而验证我们刚才为容器分配的固定IP地址是否生效了。
最后,需要注意的是,我们可以为同一个网络中的多个容器分配不同的IP地址,但IP地址必须在同一个子网中。

#将容器1添加到my_network网络中
docker network connect my_network container1
#从网络中删除容器1
docker network disconnect my_network container1
#使用Bridge模式进行网络配置
docker run -it --name my_container --net bridge

1.3.2 创建指定网关的网络

docker network create --subnet=192.168.10.0/255 pub_network

2. docker安装软件

2.1 安装nginx

docker pull nginx#挂载启动
docker run -it -d \
--name=nginx \
--network=pub_network \
-p 80:80 \
-v /docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
-v /docker/nginx/html:/usr/share/nginx/html \
-v /docker/nginx/logs:/var/log/nginx \
--privileged nginx

2.2 安装redis

docker pull redis#配置下面内容
# 文件路径:/docker/redis/redis.conf
port 6379
bind * 
daemonize no
pidfile /docker/redis/redis.pid
appendonly yes# 启动docker run \
--network=pub_network \
--name redis \
-v /docker/redis/data:/data \
-v /docker/redis/redis.conf:/etc/redis/redis.conf \
-d redis \
redis-server /etc/redis/redis.conf \
--appendonly yes

2.3 安装mysql

docker pull mysql:5.7#配置
#文件 /docker/mysql/conf/my.cnf
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
skip-name-resolve# 启动容器
docker run --name mysql \
-p 3306:3306 \
--network=pub_network \
-v /docker/mysql/log:/var/log/mysql \
-v /docker/mysql/data:/var/lib/mysql \
-v /docker/mysql/conf/my.cnf:/etc/my.cnf \
-e MYSQL_ROOT_PASSWORD=root \
-d mysql:5.7#进入容器内部
docker exec -it mysql bash
mysql -uroot -proot#给root开远程权限
grant all privileges on *.* to root@"%" identified by "root";
flush privileges;

2.4 部署springboot程序

2.4.1 编写dockerfile

文件名称固定是Dockerfile,不能随意改变,文件内容如下:

FROM openjdk:8  
# 第一行必须是FROM。。。,不能把这行注释移动到第一行。
# 如果镜像没有,则会自动下载# 作者
MAINTAINER 硅谷工具人# VOLUME 指向了一个/tmp的目录,由于 SpringBoot使用内置的Tomcat容器,Tomcat默认使用/tmp作为工作目录。
# 这个命令的效果是:在宿主机的/var/lib/docker目录下创建一个临时文件并把它链接到容器中的/tmp目录
VOLUME /tmp# 将应用的配置文件也拷贝到镜像中。使用下面的ADD也可以
# COPY *.jar /app.jar  # 将本地JAR包打包到容器中,并重命名(erp.jar是重命名后的jar)
ADD ruoyi-admin.jar erp.jar# 声明需要暴露的端口,在Dockerfile中声明了那些端口是需要开放的,
# 在构建容器时通过-p可以随机映射端口,如果EXPOSE没有指定端口,那么使用-p参数无效。
# 本配置只是声明,一般我们需要在构建docker容器时使用-p(小写的p)指定开放的端口。
EXPOSE 8080  #docker启动时,运行的命令,这里容器启动时直接运行jar服务。
ENTRYPOINT ["java","-jar","/erp.jar"]

注意点:
1、文件名必须是Dockerfile,大小写不能修改
2、maven项目先打包,然后将打包好的jar包和Dockerfile文件上传到服务器,并且放到相同的目录。
3、如果有外置配置文件application.yml,也需要放到上面相同的目录。

2.4.2 构建镜像

docker build -t erp:1.0 .#查看构建的镜像
docker images

2.4.3 启动镜像

docker run --network=pub_network --name erp -d  erp:1.0

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

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

相关文章

C语言程序设计—通讯录实现

本篇文章主要是实现一个简易的通讯录: 功能如下: 添加用户修改用户删除用户查找用户(可重名)按名字或年龄排序显示用户保存通讯录日志追加 有如下知识点: 动态数组结构体枚举自定义标识符和宏文件打开与存储函数指针…

matlab相机标定求得相机内参

素材下载 可以去官网下载标定板,然后使用我们的相机进行拍照(10~15张即可): 下载请点击这里:here 在拍摄照片之前,先量取对应的每个方格的长度: 如下: 使用MATLAB标定 打开MATLAB的命令行: 输入 cameraCalibrator #调用标定的工具箱 添加的是刚刚我们拍照标定板的…

微信小程序使用editor 富文本编辑器

.wxml <editor id"editor" class"item-content ql-container" placeholder"请输入新闻内容" bindstatuschange"onStatusChange" bindready"onEditorReady" bindinput"onInput" bindblur"onBlur">…

商城系统优化

1、DB、模板的渲染速度&#xff08;thymeleaf&#xff09;、静态资源、日志、JVM 数据库的优化&#xff08;参照数据库优化课程&#xff09;使用索引&#xff0c;减少数据库的交互次数、缓存 thymeleaf使用缓存 静态资源&#xff1a;放到nginx中&#xff0c;实现动静分离 2、…

2023-09-08力扣每日一题

链接&#xff1a; 2651. 计算列车到站时间 题意&#xff1a; 不看日期只看时间 解&#xff1a; &#xff1f; 实际代码&#xff1a; 还看&#xff01;你怎么肥四&#xff1f;int findDelayedArrivalTime(int arrivalTime, int delayedTime) {return (arrivalTimedelayed…

华为数通方向HCIP-DataCom H12-821题库(单选题:301-320)

第301题 某台路由器运行 IS-IS,其输出信息如图所示,下列说法错误的是? [R1]display isis sdb local verboseDatabase information for ISIS(1) Level-1 Link State Database LSPID Seq Num Checksum Holdtime…

电脑同时连接有线和无线网络怎么设置网络的优先级

电脑同时连接有线和无线网络怎么设置网络的优先级&#xff1a; 我们知道在 笔记本电脑系统 中&#xff0c;可以通过有线或无线网络进行联网。如果电脑在有线网络和无线网络同时存在的情况&#xff0c;应该怎么设置有线网络优先连接呢?对此我们提供下面的方法可以让电脑在有Wi…

Spring框架入门:构建你的第一个Web应用

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f984; 博客首页——&#x1f405;&#x1f43e;猫头虎的博客&#x1f390; &#x1f433; 《面试题大全专栏》 &#x1f995; 文章图文…

python 编程应用:使用 Python 实现数据可视化

Python编程应用是一种非常流行的编程语言&#xff0c;它可以用于开发各种软件和应用程序。Python可以用于创建Web应用程序&#xff0c;桌面应用程序&#xff0c;移动应用程序&#xff0c;数据科学&#xff0c;机器学习&#xff0c;自然语言处理&#xff0c;系统管理&#xff0c…

Qt之postEvent

基本介绍 postEvent方法所属类为QCoreApplication&#xff0c;完整声明如下&#xff1a; [static] void QCoreApplication::postEvent(QObject *receiver, QEvent *event, int priority Qt::NormalEventPriority) 该方法的作用是将要发送的事件推送到对应线程的事件队列中&…

基于SpringBoot的在线教育平台系统

基于SpringBootVue的线教育平台系统&#xff0c;前后端分离 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 【主要功能】 角色&#xff1a;管理员、学生、老师 …

【网络编程】学习成果day7:用sqlite3和fgetc将字典写入数据库中的数据表。

1.将字典写入数据库中的数据表 代码&#xff1a; linuxlinux:~/study/NETbc$ cat 03_dictsqlite3.c #include<myhead.h> #define MAX 50int do_insert(sqlite3* db);int main(int argc, const char *argv[]) {//打开数据库sqlite3 *dbNULL;if(sqlite3_open("./dic…

修改Docker的运行时数据存储位置

Docker的运行时数据&#xff0c;包括镜像、容器、网络和存储卷等默认存储在/var/lib/docker目录下&#xff0c;如果硬盘容量有限我们则需要修改这个存储位置 修改步骤如下&#xff1a; 停止Docker服务&#xff1a;sudo systemctl stop docker 创建一个新的目录来存储Docker运…

【C++基础】5. 常量

文章目录 【 1. 常量的分类 】1.1 整型常量1.2 浮点常量1.3 字符常量1.4 字符串常量1.5 布尔常量 【 2. 常量的定义 】2.1 #define 预处理器2.2 const 关键字 常量 是固定值&#xff0c;在程序执行期间不会改变。这些固定的值&#xff0c;又叫做字面量。常量可以是任何的基本数…

企业架构LNMP学习笔记22

防盗链原理和实现。 域名A的资源文件&#xff0c;经常被域名B直接调用访问。 而用户经常访问域名B&#xff0c;看到的资源&#xff08;图片等&#xff09;以为是域名B的&#xff0c;实际则是域名A的。 但是域名A没有获得任何收益&#xff0c;却要给域名B来源的访问消耗服务器…

总结 - 组件通用封装思路(组件封装)

组件封装&#xff1a; 1. 不变&#xff1b; 2. 变&#xff1a;①prop ②slot插槽 详细总结在文末。 --------------------------------------------------------------------------------------------------- 问题&#xff1a;结构相似&#xff0c;内容不同 --》 可以用组…

在Kubernetes环境中有关Nginx Ingress与API Gateway的连接问题

文章目录 小结问题解决参考 小结 在Kubernetes环境中是通过Nginx Ingress来从外部访问Kubernetes内部的环境&#xff0c;并用API Gateway来分发请求&#xff0c;碰到了 502 Bad gateway.的问题&#xff0c;并尝试解决。 问题 从外部通过Nginx Ingress访问Kubernetes内部的环…

Shell命令管理进程

Shell命令管理进程 列出进程 ps命令 top命令 管理后台进程 启动后台进程 查看后台进程 jobs和ps的区别 停止进程 Linux除了是一种多用户操作系统之外&#xff0c;还是一种多任务系统。多任务意味着可以同时运行多个程序。Linux 提供了相关的工具来列出运行中的进程,监视…

ClickHouse进阶(七):Clickhouse数据查询-1

进入正文前&#xff0c;感谢宝子们订阅专题、点赞、评论、收藏&#xff01;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; &#x1f3e1;个人主页&#xff1a;含各种IT体系技术,IT贫道_Apache Doris,大数据OLAP体系技术栈,Kerberos安全认证-CSDN博客 &#x1f4cc;订阅…

SpringMVC应用

文章目录 一、常用注解二、参数传递2.1 基础类型String2.2 复杂类型2.3 RequestParam2.4.路径传参 PathVariable2.4 Json数据传参 RequestBody2.5 RequestHeader 三、方法返回值3.1 void3.2 Stringmodel3.3 ModelAndView 一、常用注解 SpringMVC是一个基于Java的Web框架&#…