使用docker部署project-exam-system(项目)
nmt
使用基础的docker指令来创建镜像,实现项目的发布
dockerfile去创建镜像
docker-compose编排容器
docker pull nginx
使用docker部署project-exam-system(项目)
1.背景,在一台主机之内,实现容器的编排,发布考试系统
2.环境准备
1.docker
1.vim /etc/docker/daemon.json
2.docker-compos
3.普通的部署
1.镜像
1.前端:nginx服务
1.拉取nginx:latest镜像
2.测试
3.上传前端项目dist
4.创建启动容器
docker run -itd -p80:80 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html nginx:latest
2.后端的业务jdk17 springboot优点不用单独部署tomcat,已经在springboot中内置tomcat数据持久化业务
①准备拉去基础centos镜像
[root@docker-01 project_exam_system]# docker pull centos2.docker run -it centos:latest /bin/bash
3.ctrl p+q
4.jdk17版本的文件
5.项目资源 .war6.将服务器上的java的资源文件上传到容器
1.docker cp jdk... 60:/
2.docker cp Pro... 60:/
3.docker cp app... 60:/
7.对已经传到容器的文件进行部署 docker attach 60
8.tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/jdk/ --strip-components=1
9.修改appllcation.properties 文件
1.spring.datesource.url=jdbc:msyql://你的主机的ip:3306/project exam system
2./usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war
3.Ctrl p q退出
10.根据容器创建镜像 docker commit 60 java:v0
11.docker images 且docker stop 60
12.移除原有的容器 docker rm 60
13.根据新的镜像,创建容器 docker run -itd - p8080:8080 java:v0
14.docker ps 查看容器的进程 docker ps
15.docker attach 8c
16./usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war
3.数据持久化业务 mysql5.7.44
(1)拉取MySQL镜像
(2)创建容器并映射端口
(3)向容器中上传文件
(4)将mysql文件上传
(5)将sql文件上传到mysql容器中
(6)使用exec指令访问数据库管理界面
实操:
部署docker
首先部署docker的环境
然后拉取nginx镜像
部署nginx
[root@docker2 ~]# docker pull nginx
[root@docker2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 5ef79149e0ec 2 weeks ago 188MB
[root@docker2 ~]# docker run -itd -p80:80 nginx:latest
660f216daec4a1985b86e057396d0b7bec89e22a4fb72bcebe3836f7e2380004
[root@docker2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
660f216daec4 nginx:latest "/docker-entrypoint.…" 20 seconds ago Up 19 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp peaceful_clarke
[root@docker2 ~]# curl localhost在容器启动之后,nginx服务就自动发布了
查看nginx容器的资源文件
[root@docker2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
660f216daec4 nginx:latest "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp peaceful_clarke
[root@docker2 ~]# docker exec -it 660 ls /usr/share/nginx/html
50x.html index.html
创建一个目录,不单独放置前端的资料,将后端的所有的资料也都放在这里[root@docker2 ~]# mkdir project_exam_system
[root@docker2 ~]# cd project_exam_system/
[root@docker2 project_exam_system]# mkdir web
上传dist目录scp -r 主机文件地址 root@192.168.2.82:~/project_exam_system/web/[root@docker2 project_exam_system]# ls web/
dist
[root@docker2 project_exam_system]# ls web/dist/
assets favicon.ico index.html
再创建容器,不止映射端口,还挂载目录[root@docker2 project_exam_system]# docker stop 660
660
[root@docker2 project_exam_system]# docker rm 660
660
[root@docker2 project_exam_system]# docker run -itd -p80:80 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html nginx:latest
0a98fa10f0d24ea0ef16354b81aa5d65148b774f5e57d4c1d45eca3d6c1c15ab[root@docker2 project_exam_system]# docker exec -it 0a ls /usr/share/nginx/htmlassets favicon.ico index.html
[root@docker2 project_exam_system]# docker pull centos
部署java
scp -r "D:\企业\第八周\jdk-17_linux-x64_bin.tar.gz" root@192.168.2.82:~
把所需要的文件都上传
[root@docker2 project_exam_system]# ls ~
anaconda-ks.cfg jdk-17_linux-x64_bin.tar.gz
application.properties project_exam_system
docker.sh Project_ExamSystem-V1.0.0.war
[root@docker2 ~]# docker cp jdk-17_linux-x64_bin.tar.gz 60:/
Successfully copied 183MB to 60:/
[root@docker2 ~]# docker cp application.properties 60:/
Successfully copied 4.1kB to 60:/
[root@docker2 ~]# docker cp Project_ExamSystem-V1.0.0.war 60:/
Successfully copied 41MB to 60:/
[root@docker2 ~]# ls
anaconda-ks.cfg jdk-17_linux-x64_bin.tar.gz
application.properties project_exam_system
docker.sh Project_ExamSystem-V1.0.0.war进入容器
[root@docker2 ~]# docker attach 60
[root@601ec11a7696 /]# mkdir /usr/local/jdk
[root@601ec11a7696 /]# tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/jdk/ --strip-components=1修改配置文件
[root@601ec11a7696 /]# vi application.properties
spring.datesource.url=jdbc:msyql://你的主机的ip:3306/project exam system
启动服务
[root@601ec11a7696 /]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war
访问一下,说明服务正常启动了
[root@docker2 ~]# curl 172.17.0.3:8080
{"code":20002,"msg":"账号不存在或密码错误"}[root@docker2 ~]# 正常的,只是没有账号密码创建一个新的镜像
[root@docker2 ~]# docker commit 601 java:v0
sha256:3d00fe7518004cc18585624ed99c2b921c3fe6311a7ac7cf6836cb75e9814ace
[root@docker2 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
java v0 3d00fe751800 35 seconds ago 774MB
nginx latest 5ef79149e0ec 2 weeks ago 188MB
centos latest 5d0da3dc9764 2 years ago 231MB
映射8080端口[root@docker2 ~]# docker run -itd -p8080:8080 java:v0
8cbc0d856a39336fa62790179dbef62638f88f3bacc5af13eb5bd7016c2781a4
[root@docker2 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
8cbc0d856a39 java:v0 "/bin/bash" 4 seconds ago Up 4 seconds 0.0.0.0:8080->8080/tcp, :::8080->8080/tcp vigorous_varahamihira
0a98fa10f0d2 nginx:latest "/docker-entrypoint.…" About an hour ago Up About an hour 0.0.0.0:80->80/tcp, :::80->80/tcp competent_williamson
mysql容器制作:
106 mkdir mysql
107 ls project_exam_system
108 cp project_exam_system.sql project_exam_system/
109 mv project_exam_system.sql project_exam_system/mysql
110 ls project_exam_system/
111 cd project_exam_system/
112 head mysql/project_exam_system.sql
113 docker ps
114 cd
115 docker cp project_exam_system/mysql/project_exam_system.sql 40:/
116 docker exec -it 40 mysql -uroot -proot将sql上传到mysql容器中
mysql -uroot -proot < project_exam_system.sql
[root@docker2 ~]# docker exec -it 40 mysql -uroot -proot
mysql> show databases; +---------------------+ | Database | +---------------------+ | information_schema | | mysql | | performance_schema | | project_exam_system | | sys | +---------------------+ 5 rows in set (0.00 sec)创建权限并且赋予权限mysql> create user 'zhangmin'@'%' identified by 'zhangmin'; Query OK, 0 rows affected (0.00 sec)mysql> grant all on *.* to 'zhangmin'@'%'; Query OK, 0 rows affected (0.00 sec)mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
查看所有正在运行的容器,宿主机上的所有docker容器进行管理
docker compose java服务的,手撕了一个镜像
优化java服务
124 mkdir project_exam_system/java
125 mv jdk-17_linux-x64_bin.tar.gz project_exam_system/java/
126 mv application.properties project_exam_system/java/
127 mv Project_ExamSystem-V1.0.0.war project_exam_system/java/
128 ls
129 tree -L 3 project_exam_system/
[root@docker2 java]# ls
application.properties jdk-17_linux-x64_bin.tar.gz
Dockerfile Project_ExamSystem-V1.0.0.war[root@docker2 java]# vim Dockerfile
FROM centos:latestADD application.properties /application.propertiesADD jdk-17.0.12/ /usr/local/jdk/ADD Project_ExamSystem-V1.0.0.war /Project_ExamSystem-V1.0.0.warWORKDIR /ADD start.sh /start.shRUN chmod -v +x /start.shEXPOSE 8080CMD ["/start.sh","/bin/bash" ]
163 docker build -t java:v1 .
164 docker run -itd -p8081:8080 java:v1
165 docker ps
166 curl localhost:8081
167 docker exec 48 ss -anut | grep 8080