docker部署SpringBoot项目

本文详细介绍了如何在Linux系统上安装Docker,包括CentOS和Debian/Ubuntu的安装步骤,以及使用Docker创建网络、安装Web应用如nginx、redis和mysql,以及部署SpringBoot应用程序的过程。还涉及了Dockerfile的编写和镜像构建方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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:9000

admin
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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

硅谷工具人

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

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

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

打赏作者

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

抵扣说明:

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

余额充值