Docker上线微服务
做了一个使用docker镜像上线微服务的项目,在此记录一下
全程使用了4个jar包,运行四个java项目,jar包内容不重要,主要是学习上线微服务的流程
先将四个jar包用dockerfile文件在centos7镜像的基础上创建成对应的项目镜像
然后使用了6个容器部署微服务,其中4个容器分别运行4个jar包;1个nginx容器运行nginx前端,本机的/root/dist存放的前端代码,将容器的前端默认发布目录映射到/root/dist下;1个mysql容器运行数据库,为项目提供数据支撑,有两个sql数据文件,直接导入mysql即可。
容器与宿主机的端口映射关系
准备:
vmware使用net模式,并将虚拟网络修改为10.0.0.0,网关修改为255.255.255.0
将服务器的ip修改为10.0.0.220
基本流程:
1.构建项目jar包镜像,运行eureka镜像
2.构建mysql容器,设置密码为mysql 并创建两个库,以及数据导入
3.构建nginx容器,将项目映射到容器中的网站发布目录下
4.运行剩余的jar包镜像
详细流程:
1、下载jdk
因为运行的jar包项目,java需要jdk环境
2、为四个jar包创建四个目录,方便管理,并将四个jar包和jdk分别拷贝到四个目录下
3、分别在对应目录下为每个jar包项目编写dockerfile文件创建项目镜像
目录1下:
dockerfile文件内容
目录2下:
dockerfile文件内容
目录3下:
dockerfile文件内容
目录4下:
dockerfile文件内容
四个dockerfile内容基本一样,只不过把jar包不同
5、构建eureka项目镜像并运行
进入存放eureka的目录下
[root@localhost 2]# docker build -t eureka:v1 .
[root@localhost 2]# docker run -itd --name eureka -p 30020:10086 eureka:v1
运行eureka,浏览器访问10.0.0.220:30020可以看到如下界面:
6、拉取mysql镜像,并构建mysql容器
[root@localhost ~]# docker run -itd --name mysql -e MYSQL_ROOT_PASSWORD=mysql -p 30023:3306 daocloud.io/library/mysql:5.7.7
7、进入mysql,建表并导入数据
[root@localhost ~]# mysql -uroot -pmysql -h 10.0.0.220 -p 30023
MySQL [(none)]> create database tenaquare_user charset=utf8;
MySQL [(none)]> create database tenaquare_gathering charset=utf8;
然后将两个sql数据文件导入
进入tenaquare_user数据库
MySQL [(none)]> source tenaquare_user.sql;
进入tenaquare_gathering数据库
MySQL [(none)]> source tenaquare_gathering;
8、拉取nginx镜像,并构建容器,将disk目录映射到nginx容器的默认发布目录下
[root@localhost ~]# docker run -itd --name nginx -p 8088:80 -v /root/disk:/usr/local/nginx/html nginx:v1
9、进入zuul、gathering、admin对应的目录运行dockerfile文件构建镜像并运行
zuul:
[root@localhost 3]# docker build -t zuul:v1 .
[root@localhost 3]# docker run -itd --name zuul -p 30021:10020 zuul:v1
gathering:
[root@localhost 4]# docker build -t gathering:v1 .
[root@localhost 4]# docker run -itd --name gathering -p 30022:9002 gathering:v1
admin:
[root@localhost 1]# docker build -t admin:v1 .
[root@localhost 1]# docker run -itd --name admin -p 30024:9001 admin:v1
依次运行这几个镜像,在eureka下看到这几个容器都加进去了
浏览器访问10.0.0.220:8088看到如下界面,整个微服务搭建完成