当前位置: 首页 > news >正文

使用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 centos

                        2.docker run -it centos:latest /bin/bash     

                        3.ctrl p+q                  

                        4.jdk17版本的文件
                        5.项目资源 .war

                       6.将服务器上的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
 


http://www.mrgr.cn/news/15656.html

相关文章:

  • 羊大师:防疫不松懈:开学季儿童个人防护小贴士
  • 【vue3】详解单向数据流,大家千万不用为了某某而某某了
  • TD学习笔记————中级教程总结(下)
  • RKNPU2从入门到实践 ---- 【9】使用RKNPU2的C API接口将RKNN模型部署在RK3588开发板上
  • JavaWeb——前端工程化
  • 行得稳,跑得远,美团如何做到长期主义持续发力?
  • 已解决**Java OutOfMemoryError: GC Overhead Limit Overload - 问题分析与解决方法**
  • springboot学习(2)
  • 斯坦福UE4 C++课学习补充24:伤害数值
  • 【动态规划】两个数组 / 字符串的dp问题(子序列、子数组问题、匹配问题、字符串问题)
  • 什么是反应诱导重构
  • YoloV8训练参数篇
  • 【IEEE出版 | 往届会后三个月检索 | 院士杰青领衔】第五届大数据、人工智能与软件工程国际研讨会(ICBASE 2024)
  • tail 和 head命令(查看文件内容
  • 数据分析报告练习作业
  • Mysql基础练习题 595.大的国家 (力扣)
  • 【提分必看!】蓝桥杯单片机提分技巧(国一经验分享)
  • git 更改分支名称
  • SLAM的详细介绍,包括其基本原理、主要组件、算法类型、应用场景以及面临的挑战
  • 92. UE5 RPG 使用C++创建GE实现灼烧的负面效果