五、Docker实战

本文详细介绍了如何在Docker中设置网络,创建并配置MySQL容器,建立数据卷,以及构建SpringBoot应用的Docker镜像。此外,还展示了如何用Nginx做负载均衡,连接多个SpringBoot服务,并提供了访问应用的步骤。

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

Docker从入门到实战-Docker实战

Spring Boot项目+MySQL

网络

(1) 网络

docker network create --subnet=172.18.0.0/24 pro-net

(2) 网络划分

mysql–172.18.0.6
spring boot–172.18.0.11/12/13 nginx–172.18.0.10
在这里插入图片描述

MySQL

(1) 创建volume

docker volume create v1

(2)创建mysql容器

docker run -d --name my-mysql -v v1:/var/lib/mysql -p 3301:3306 -e MYSQL_ROOT_PASSWORD=xiaohuoban --net=pro-net --ip 172.18.0.6 mysql

(3)使用客户端datagrip连接,执行.mysql文件

name:my-mysql
ip:centos-ip 端口:3301
user:root
password:xiaohuoban

create schema db_nx_springboot collate utf8mb4_0900_ai_ci; 
use db_nx_springboot;
create table t_user (
id int not null primary key,
username varchar(50) not null, 
password varchar(50) not null, 
number varchar(100) not null
);

Spring Boot项目

Spring Boot+MyBatis实现CRUD操作,名称为“springboot-docker”

(1) 在本地测试该项目的功能 主要是修改application.yml文件中数据库的相关配置

(2) 在项目根目录下执行mvn clean package打成一个jar包

[记得修改一下application.yml文件数据库配置] mvn clean package
-Dmaven.test.skip=true

在target下找到"springboot-docker-0.0.1-SNAPSHOT.jar.jar"
(3)在docker环境中新建一个目录"springboot-docker"
(4) 上传"springboot-docker-0.0.1-SNAPSHOT.jar"到该目录下,并且在此目录创建Dockerfile
(5)编写Dockerfile内容

FROM java LABEL name=“springboot-docker” version=“1.0” author=“kojon”
ADD /springboot-docker-0.0.1-SNAPSHOT.jar // ENTRYPOINT [“java”,
“-jar”, “/springboot-docker-0.0.1-SNAPSHOT.jar”]
(6) 基于Dockerfile构建镜像
docker build -t sbd-image .
(7) 基于image创建container
docker run -d --name sb01 -p 8081:8080 --net=pro-net --ip 172.18.0.11 sbd-image
(8) 查看启动日志docker logs sb01
(9) 在win浏览器访问http://192.168.56.186:8081/

网络问题

因为sb01和my-mysql在同一个bridge的网段上,所以是可以互相ping通,比如

docker exec -it sb01 ping 172.18.0.6
or
docker exec -it sb01 ping my-mysql

那么application.yml文件不妨这样修改一下?也就是把ip地址直接换成容器的名字

url: jdbc:mysql://my-mysql/db_nx_springboot?

创建多个项目容器
docker run -d --name sb01 -p 8081:8080 --net=pro-net --ip 172.18.0.11 sbm-image
docker run -d --name sb02 -p 8082:8080 --net=pro-net --ip 172.18.0.12 sbm-image
docker run -d --name sb03 -p 8083:8080 --net=pro-net --ip 172.18.0.13 sbm-image

Nginx

在centos的/tmp/nginx下新建nginx.conf文件,并进行相应的配置

user nginx;worker_processes 1;events {worker_connections 1024;}http {
include /etc/nginx/mime.types; default_type
application/octet-stream; sendfile on; keepalive_timeout 65;
server { listen 80; location / { proxy_pass
http://balance; } } upstream balance{ server
172.18.0.11:8080; server 172.18.0.12:8080; server 172.18.0.13:8080; } include /etc/nginx/conf.d/*.conf;}

(2)创建nginx容器
注意 :先在centos7上创建/tmp/nginx目录,并且创建nginx.conf文件,写上内容

docker run -d --name my-nginx -p 80:80 -v /tmp/nginx/nginx.conf:/etc/nginx/nginx.conf --network=pro-net --ip
172.18.0.10nginx

(3) win浏览器访问: ip[centos]/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值