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

实训day40(8.30)

一、回顾

1、使用harbao仓库
1. Python -- version

2. yum -y update

3. yum -y install python2-pip

4. pip install --upgrade pip==20.3  -i https://mirrors.aliyun.com/pypi/simple

5.  pip install docker-compose  -i https://mirrors.aliyun.com/pypi/simple

6. source docker.sh

7. 解压harbar

8. vim harbor.yml

        8.1 hostname

        8.2 https 注释

9. ./prepare

10. ./installed

        10.1 使用nginx发布web服务

        10.2 使用registry管理

2、docker-compose的编排
        1. 在学习kubernetes之前的热身

        2. 通过运行一个yum管理docker容器

        3. docker-compose.yml

vim docker-compose.yml
version: "2"
service: 
    nginx:
        contanner_name: name0
        image: nginx:latest
        ports:
        - "80:80"
        volumns:
        - /opt/web/:/usr/share/nginx/html/

1.容器的角色

2.容器的位置

3.容器的启动

4.容器之间的关系

playbook role 编排

二、使用docker部署project-exam-system

1、背景
在一台主机之内,实现容器的编排,发布考试系统

2、 环境准备
1. docker
1.1 vim /etc/docker/daemon.json

[root@docker ~]# vim /etc/docker/daemon.json 

{
    "registry-mirrors": [
        "https://do.nark.eu.org",
        "https://dc.j8.work",
        "https://docker.m.daocloud.io",
        "https://dockerproxy.com",
        "https://docker.mirrors.ustc.edu.cn",
        "https://docker.nju.edu.cn"
    ]
}

[root@docker ~]# systemctl start docker

3、普通部署
1. 镜像
1.1 前端:nginx服务
(1)拉取nginx:latest镜像

[root@docker ~]# docker search nginx
[root@docker ~]# docker pull nginx

(2)创建nginx容器

[root@docker ~]# docker run -itd -p80:80 nginx:latest 

[root@docker ~]# docker ps --all

CONTAINER ID   IMAGE          COMMAND                   CREATED          STATUS          PORTS                               NAMES
243f7f9a0470   nginx:latest   "/docker-entrypoint.…"   12 seconds ago   Up 12 seconds   0.0.0.0:80->80/tcp, :::80->80/tcp   ecstatic_johnson
[root@docker ~]# docker exec -it 243 ls /usr/share/nginx/html
50x.html  index.html

(3)创建一个目录,不单独放置前端的内容,将后端的所有资料也放在这里

[root@docker ~]# mkdir project_exam_system
[root@docker ~]# cd project_exam_system/
[root@docker project_exam_system]# mkdir web

[root@docker project_exam_system]# ls web/
dist
[root@docker project_exam_system]# ls web/dist/
assets  favicon.ico  index.html

(4)上传项目 dist

C:\Users\think book>scp -r E:\xxxx\dist\ root@192.168.8.168:~/project_exam_system/web/
[root@docker project_exam_system]# docker stop 243
243
[root@docker project_exam_system]# docker rm 243

(5)再创建一个容器,不映射端口

[root@docker web]# docker run -itd -p80:80 -v /root/project_exam_system/web/dist/:/usr/share/nginx/html/ nginx:latest
46ffd2bf7face9ce7866af7d440f43f299c4c7d8d6c51444a0db602e162a1353
[root@docker web]# docker exec -it 46f ls /usr/share/nginx/html
assets    favicon.ico  index.html

(6)测试

登录异常,原因是后端没有部署

登陆的时候请求域名,我们是hosts域名劫持来实现

修改/etc/hosts

192.168.8.168 bu.yuanyu.zhangmin

1.2 后端业务
springboot 优点 不用单独部署tomcat,已经在springboot中部署tomcat

(1)准备拉取基础镜像

[root@docker project_exam_system]# docker pull centos

(2)创建容器

[root@docker ~]# docker run -it centos:latest  /bin/bash
[root@5fd07aadd6a6 /]# ls

bin  etc   lib      lost+found  mnt  proc  run   srv  tmp  var
dev  home  lib64  media       opt  root  sbin  sys  usr
(3)将在服务器上的java文件上传到容器中

 资源项目.war .properties

[root@docker ~]# docker cp jdk-17_linux-x64_bin.tar.gz 5fd:/
Successfully copied 183MB to 5fd:/
[root@docker ~]# docker cp application.properties 5fd:/
Successfully copied 4.1kB to 5fd:/
[root@docker ~]# docker cp Project_ExamSystem-V1.0.0.war 5fd:/
Successfully copied 41MB to 5fd:/

(4)对已经传到容器的文件进行部署

[root@docker ~]# docker attach 5fd
[root@5fd07aadd6a6 /]# ls

Project_ExamSystem-V1.0.0.war  lib64       sbin
application.properties           lost+found  srv
bin                   media       sys
dev                   mnt       tmp
etc                   opt       usr
home                   proc       var
jdk-17_linux-x64_bin.tar.gz    root
lib                   run
(4)创建jdk解压目录

[root@5fd07aadd6a6 /]# mkdir /usr/local/jdk
[root@5fd07aadd6a6 /]# tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local/jdk/ --strip-components=1     //=1 :跳过一层目录

[root@5fd07aadd6a6 /]# ls /usr/local/jdk/
LICENSE  bin   include    legal  man
README     conf  jmods    lib    release

(5)修改applation.proerties文件

[root@5fd07aadd6a6 /]# vi application.properties 

spring.datasource.url=jdbc:mysql://192.168.8.168:3306/project_exam_system
spring.datasource.username=blt
spring.datasource.password=blt
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
(6)启动

[root@5fd07aadd6a6 /]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war    ctrl+p+q
[root@docker ~]# curl 172.17.0.3:8080
{"code":20002,"msg":"账号不存在或密码错误"}

(7)根据容器生成镜像

[root@docker ~]# docker commit 5fd java:v0
[root@docker ~]# docker images

REPOSITORY                  TAG       IMAGE ID       CREATED          SIZE
java                        v0        21a2b56dffe3   21 seconds ago   774MB
centos                      yum       1bd5d7b13eed   2 days ago       272MB
nginx                       latest    5ef79149e0ec   2 weeks ago      188MB
[root@docker ~]# docker stop df
df
[root@docker ~]# docker rm 5f
df

(8)根据新建的镜像创建容器

[root@docker ~]# docker run -itd -p8080:8080 java:v0

[root@docker ~]# docker ps

CONTAINER ID   IMAGE     COMMAND       CREATED         STATUS         PORTS                                       NAMES
f68d82c68dfe   java:v0   "/bin/bash"   5 minutes ago   Up 5 minutes   0.0.0.0:8080->8080/tcp, :::8080->8080/tcp   fervent_ganguly
[root@docker ~]# docker attach f6
[root@f68d82c68dfe /]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war

1.3 数据持久化业务 mysql 5.7.44
(1)拉取mysql镜像

[root@docker ~]# docker pull mysql:5.7.44

[root@docker ~]# docker images

REPOSITORY                  TAG       IMAGE ID       CREATED         SIZE
mysql                       5.7.44    5107333e08a8   8 months ago    501MB
(2)根据镜像制作容器,并映射端口

[root@docker ~]# docker run -itd -e MYSQL_ROOT_PASSWORD=root -p3306:3306 mysql:5.7.44
7dcf9b329a1abef12c82dbcf1d1eac9ce2b908ac84909490088a09e2611dadc8
[root@docker ~]# docker ps --all

CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS                      PORTS                                                  NAMES
7dcf9b329a1a   mysql:5.7.44   "docker-entrypoint.s…"   5 seconds ago   Up 4 seconds                0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp   nice_gauss
(3)导出数据库文件

[root@docker ~]# docker cp 7dc:/var/lib/mysql project_exam_system/

C:\Users\think book>scp E:\xxx\project_exam_system.sql root@192.168.8.168:~/project_exam_system

[root@docker ~]# cd project_exam_system/
[root@docker project_exam_system]# ls
mysql  project_exam_system.sql  web

[root@docker project_exam_system]# mkdir mysql
[root@docker project_exam_system]# mv project_exam_system.sql mysql/

[root@docker project_exam_system]# head mysql/project_exam_system.sql 

create database if not exists project_exam_system charset utf8mb4;
use project_exam_system;
/*
 Navicat MySQL Data Transfer
 
 Source Server         : MySQL84
 Source Server Type    : MySQL
 Source Server Version : 80400
 Source Host           : localhost:3308
 Source Schema         : project_exam_system
(4)将sql上传到MySQL容器

[root@docker ~]# docker cp project_exam_system/mysql/project_exam_system.sql 7dc:/
Successfully copied 11MB to 7dc:/

(5)执行mysql文件

(6)使用exec指令访问数据库管理界面

[root@docker ~]# docker exec -it 7dc mysql -uroot -proot

mysql> show databases;
+---------------------+
| Database            |
+---------------------+
| information_schema  |
| mysql               |
| performance_schema  |
| project_exam_system |
| sys                 |
+---------------------+
5 rows in set (0.01 sec)
mysql> create user 'blt'@'%' identified by 'blt';
Query OK, 0 rows affected (0.00 sec)
 
mysql> grant all on *.* to 'blt'@'%';
Query OK, 0 rows affected (0.00 sec)
 
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
 

(7)登录测试 

(8)Dockerfile优化

创建Java资源存放目录,并把所有资源文件移动到Java目录下

[root@docker ~]# mkdir project_exam_system/java
[root@docker ~]# mv jdk-17_linux-x64_bin.tar.gz  project_exam_system/java/
[root@docker ~]# mv application.properties project_exam_system/java/
[root@docker ~]# mv Project_ExamSystem-V1.0.0.war project_exam_system/java/

[root@docker ~]# tree -L 3 project_exam_system/

project_exam_system/
├── java
│   ├── application.properties
│   ├── jdk-17_linux-x64_bin.tar.gz
│   └── Project_ExamSystem-V1.0.0.war
├── mysql
│   └── project_exam_system.sql
└── web
    └── dist
        ├── assets
        ├── favicon.ico
        └── index.html
 
5 directories, 6 files
进入java目录解压jdk并改名

[root@docker ~]# cd project_exam_system/java/
[root@docker java]# tar -axvf jdk-17_linux-x64_bin.tar.gz 

[root@docker java]# mv jdk-17.0.12/ jdk    

编写.sh文件和Dockerfile文件

[root@docker java]# vim start.sh

#!/bin/bash
/usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war
  [root@docker java]# vim Dockerfile

FROM centos:latest
 
ADD application.properties /application.properties
 
ADD jdk/ /usr/local/jdk
 
ADD Project_ExamSystem-V1.0.0.war /Project_ExamSystem-V1.0.0.war
 
WORKDIR /
 
EXPOSE 8080
 
ADD start.sh /start.sh
 
RUN chmod -v +x /start.sh
 
CMD [ "start.sh","/bin/bash" ]

使用当前目录下的Dockerfile来构建一个名为java:v1的镜像

[root@docker java]# docker build -t java:v1 .

[root@docker java]# docker images

REPOSITORY                  TAG       IMAGE ID       CREATED          SIZE
java                        v1        5d3dda7a16e7   21 seconds ago   591MB
根据java:v1镜像创建容器

[root@docker java]# docker run -it -p8081:8080 java:v1 /bin/bash
[root@a3ab4be45e47 /]# /usr/local/jdk/bin/java -jar Project_ExamSystem-V1.0.0.war 
[root@docker java]# docker exec a3a ss -anut | grep 8080

tcp   LISTEN 0      128                *:8080            *:*   


http://www.kler.cn/a/289598.html

相关文章:

  • 华为大变革?仓颉编程语言会代替ArkTS吗?
  • 【插件】多断言 插件pytest-assume
  • Fastapi使用MongoDB作为数据库
  • 【Pikachu】目录遍历实战
  • 普通电脑上安装属于自己的Llama 3 大模型和对话客户端
  • ElasticSearch学习笔记一:简单使用
  • 数据结构-广义表
  • 在uni-app中使用SQLite
  • office套件打开时 提示操作系统当前的配置不能运行此应用程序
  • VS2022使用指定的LLVM版本
  • windows 环境下安装OpenCV For Java
  • 一些可能很有用的矩阵知识
  • 新手c语言讲解及题目分享(十)——数组专项练习
  • 免费GPU平台教程,助力你的AI, pytorch tensorflow 支持cuda
  • Vue3组件通信概览
  • [Raspberry Pi]如何利用docker執行motioneye,並利用Line Notify取得即時通知和照片?
  • 2024车牌识别系统十大品牌发布,车牌智能识别系统品牌哪家好?
  • 【408 数据结构】第1章绪论
  • 开发基础软件安装地址(持续更新中)
  • Spring Boot实战:运用享元模式优化微服务间共享资源
  • 使用VM创建centos7环境
  • 知识点复习3
  • 速盾:什么是高防cdn?高防cdn的特点和好处有哪些?
  • 微信小程序知识点(一)
  • 自然语言处理系列五十三》文本聚类算法》文本聚类介绍及相关算法
  • 【软件文档】系统安全保证措施(Word)