docker network create --subnet=172.21.0.0/24 che-net02
docker volume create che-v5
创建mysql实例che-mysql,使用che-v5 volume,che-net02网络,ip为172.21.0.6,mysql:5.7镜像,端口为6607
docker run -d --name che-mysql -v che-v5:/var/lib/mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 --net=che-net02 --ip 172.21.0.6 --privileged mysql:5.7
进入到che-mysql实例中,
使用mysql客户端工具连接che-mysql数据库实例
创建数据库testDB,并创建数据表t_user,并添加数据如下图
# 表结构
CREATE TABLE `t_user` (
`id` int(11) NOT NULL,
`username` varchar(50) NOT NULL,
`password` varchar(50) NOT NULL,
`number` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
# 数据
insert into t_user (id,username,password,number) values (1,'tom','123456','0001');
insert into t_user (id,username,password,number) values (2,'james','123456','0002');
insert into t_user (id,username,password,number) values (3,'张三','123456','0003');
创建springboot+mysql工程,参考idea+Spring Boot之springboot+mysql+mybatis搭建
工程中的application.yml文件如下:
spring:
datasource:
url: jdbc:mysql://my-mysql:3306/testDB?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis:
mapper-locations: classpath:mapper/*.xml
打成jar后,最好在本地使用jar -jar xxx.jar运行测试一下(如下图)。
如何做成docker image镜像,请参考本人使用Docker创建一个springboot项目的镜像,并在容器中部署
我创建的springboot+mysql工程docker image镜像为docker-demo2-image,如下图
使用docker-demo2-image创建多个项目容器(使用network che-net02)
docker run -d --name docker-demo-1 -p 9001:8080 --net=che-net02 --ip 172.21.0.11 docker-demo2-image
docker run -d --name docker-demo-2 -p 9002:8080 --net=che-net02 --ip 172.21.0.12 docker-demo2-image
docker run -d --name docker-demo-3 -p 9003:8080 --net=che-net02 --ip 172.21.0.13 docker-demo2-image
然后在浏览器中分别访问http://192.168.1.9:9001/user/listall,http://192.168.1.9:9002/user/listall,http://192.168.1.9:9003/user/listall (此处大家需要理解一下ip和端口为什么如此)
在宿主机/tmp目录下创建nginx.conf文件,文件内容如下(此处同样要用心去理解、去想为做么配的三个server的ip和端口是这样的)(另外,我们可以将nginx.conf文件在windows系统创建好,上传到centos系统的/tmp目录下,我就是这样做的):
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.21.0.11:8080;
server 172.21.0.12:9002;
server 172.21.0.13:9003;
}
include /etc/nginx/conf.d/*.conf;
}
拉取nginx镜像
创建nginx容器che-nginx,使用network che-net02,ip设置为172.21.0.10,端口设为80,并且使用/tmp/nginx.conf配置文件
docker run -d --name che-nginx -p 80:80 -v /tmp/nginx.conf:/etc/nginx/nginx.conf --network=che-net02 --ip 172.21.0.10 nginx
在浏览器中输入http://192.168.1.9/user/listall
我们首先先创建了一个network che-net02,che-net02的网段为172.21.0.0,然后创建mysql和springboot+mysql镜像的三个实例、nginx,都用了che-net02这个网段,保证了各个容器之间的通信畅通。而且我们还可以修改springboot+mysql镜像的数据库连接配制文件中的数据库ip改为数据库容器实例名称che-mysql,在此就不截图了,大家有兴趣可以自已试一下。