docker重新部署项目_docker一键部署

docker重新部署项目_docker一键部署Docker为什么出现?阿里云镜像加速、HelloWorld流程底层原理、部署项目1、安装docker2、安装Docker-Compose3、编写相关配置文件Docker-Compose.yml编写Dockerfile编写Nginx的配置4、打包前端后端Docker简介Docker为什么出现?一款产品:开发–上线两套环境!应用环境,应用配置!开发—运维。问题:我在我的电脑上可以运行!版本更新,导致服务不可用

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

Docker简介

Docker为什么出现?

一款产品: 开发–上线 两套环境!应用环境,应用配置!
开发 — 运维。 问题:我在我的电脑上可以运行!版本更新,导致服务不可用!对于运维来说考验十分大!
环境配置是十分的麻烦,每一个机器都要部署环境(集群Redis、ES、Hadoop…) !费事费力。
之前在服务器配置一个应用的环境 Redis MySQL JDK ES Hadoop 配置超麻烦了,不能够跨平台。
开发环境Windows,最后发布到Linux!
传统:开发jar,运维来做!
现在:开发打包部署上线,一套流程做完!
docker流程: java-jar(环境) — 打包项目帯上环境(镜像) — ( Docker仓库:商店)—–下载我们发布的镜像直接运行即可!
在容器技术出来之前,我们都是使用虚拟机技术!
虚拟机:在window中装一个VMware,通过这个软件我们可以虚拟出来一台或者多台电脑!笨重!
虚拟机也属于虚拟化技术,Docker容器技术,也是一种虚拟化技术!

VMware : linux centos 原生镜像(一个电脑!) 隔离、需要开启多个虚拟机! 几个G 几分钟
docker: 隔离,镜像(最核心的环境 4m + jdk + mysql)十分的小巧,运行镜像就可以了!小巧! 几个M 秒级启动!

之前的虚拟机技术

虚拟机技术缺点

1、 资源占用十分多

2、 冗余步骤多

3、 启动很慢!

在这里插入图片描述

容器化技术

容器化技术不是模拟一个完整的操作系统

在这里插入图片描述
比较Docker和虚拟机技术的不同

  • 传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
  • 容器内的应用直接运行在宿主机的内容,容器是没有自己的内核的,也没有虚拟我们的硬件,所以就轻便了
  • 每个容器间是互相隔离每个容器内都有一个属于自己的文件系统,互不影响

镜像(image)

docker镜像就好比是一个目标,可以通过这个目标来创建容器服务,tomcat镜像==>run==>容器(提供服务器),通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

容器(container):

Docker利用容器技术,独立运行一个或者一组应用,通过镜像来创建的.
启动,停止,删除,基本命令
目前就可以把这个容器理解为就是一个简易的 Linux系统。

仓库(repository):

仓库就是存放镜像的地方!
仓库分为公有仓库和私有仓库。(很类似git)
Docker Hub是国外的。
阿里云…都有容器服务器(配置镜像加速!)

安装Docker

  • xshell或者堡塔终端连接远程服务器,连接需要我们服务器的公网ip+服务器密码

在这里插入图片描述

1、yum 包更新到最新

yum update

2、安装需要的软件包, yum-util 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的

yum install -y yum-utils device-mapper-persistent-data lvm2

3、 设置yum源

yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

4、 安装docker,出现输入的界面都按 y

yum install -y docker-ce

5、 查看docker版本,验证是否验证成功

docker --version

6、启动docker

/bin/systemctl start docker.service

7、设置镜像的仓库

yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
#上述方法默认是从国外的,不推荐

#推荐使用国内的
yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

8、 测试
docker run hello-world

9、查看已经下载的镜像(从这里可以查看已有镜像的id)

[root@iz2zeak7sgj6i7hrb2g862z ~]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
hello-world           latest              bf756fb1ae65        4 months ago      13.3kB

卸载docker

#1. 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io
#2. 删除资源,主机上的映像,容器,卷或自定义配置文件不会自动删除 
rm -rf /var/lib/docker
# /var/lib/docker 是docker的默认工作路径!
rm -rf /var/lib/containerd

阿里云镜像加速

找到镜像加速器

在这里插入图片描述

配置使用

#1.创建一个目录
sudo mkdir -p /etc/docker

#2.编写配置文件
sudo tee /etc/docker/daemon.json <<-'EOF'
{ 
   
  "registry-mirrors": ["https://9cq9ab7f.mirror.aliyuncs.com"]
}
EOF

#3.重启服务
sudo systemctl daemon-reload
sudo systemctl restart docker

在这里插入图片描述

回顾HelloWorld流程

在这里插入图片描述

docker run 流程图

在这里插入图片描述

底层原理

Docker是怎么工作的

Docker是一个Client-Server结构的系统,Docker的守护进程运行在主机上(服务)。通过Socket从客户端访问!

Docker-Server接收到Docker-Client的指令,就会执行这个命令!

[外在这里插入图片描述

为什么Docker比Vm快
1、docker有着比虚拟机更少的抽象层。由于docker不需要Hypervisor实现硬件资源虚拟化,运行在docker容器上的程序直接使用的都是实际物理机的硬件资源。因此在CPU、内存利用率上docker将会在效率上有明显优势。
2、docker利用的是宿主机的内核,而不需要Guest OS。

GuestOS: VM(虚拟机)里的的系统(OS)

HostOS:物理机里的系统(OS)

在这里插入图片描述

因此,当新建一个 容器时,docker不需要和虚拟机一样重新加载一个操作系统内核。仍而避免引导、加载操作系统内核返个比较费时费资源的过程,当新建一个虚拟机时,虚拟机软件需要加载GuestOS,返个新建过程是分钟级别的。而docker由于直接利用宿主机的操作系统,则省略了这个复杂的过程,因此新建一个docker容器只需要几秒钟

Docker的常用命令

$ docker ps // 查看所有正在运行容器 
$ docker stop containerId // containerId 是容器的ID 
$ docker ps -a // 查看所有容器 $ docker ps -a -q // 查看所有容器ID 
$ docker stop $(docker ps -a -q) //  stop停止所有容器 
$ docker rm $(docker ps -a -q) //   remove删除所有容器
$ docker ps -a:查看已经运行的docker镜像
$ docker exec -it imagename(镜像名称) bash
$ service mysql status 查看mysql的启动状态
$ docker rm -f mysql(容器名称): 删除容器
$ 设置数据库root密码:docker run -name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=数据库密码 mysql
$ docker start :启动一个或多个已经被停止的容器
$ docker stop :停止一个运行中的容器
$ docker restart :重启容器 
$ netstat -anp |grep 3306 :查看端口
$ docker stats  :查看docker容器使用内存情况  查看cpu状态

部署项目

  • 如果不是前后端分离直接导入jar其实也可以
  • 部署之前的练手博客springboot+vue

由于前后端分离所以用nginx来部署vue,后端直接导入jar包即可,redis和mysql可以直接用服务器中的,也可以导入容器内部做一个端口映射,在容器里面使用

1、安装docker

2、安装Docker-Compose

这个相当于是一个容器的方法,执行Docker-Compose up根据docker-Compose.yml来执行里面的容器

1、安装

curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

去到安装目录检查:下载成功!

在这里插入图片描述

2、设置文件可执行权限

sudo chmod +x /usr/local/bin/docker-compose

3、查看版本信息

docker-compose -version

在这里插入图片描述

3、编写相关配置文件

在这里插入图片描述

  • html(目录):存放我们Vue的前端项目打包后的结果!
  • nginx.conf : 我们Nginx的核心配置
  • blog-api…:我们的后端的Spriongboot项目打的jar包
  • docker-compose.yml:我们Docker-Compose的核心配置文件
  • Dockerfile:我们的Springboot项目,无法直接在DockerHub拉取,需要借助其built镜像

Docker-Compose.yml

  • 注意格式,缩进问题,一级空格只能有一个
version: '3'
services:
  nginx: #服务名称
    image: nginx:latest
    ports:
    - 80:80
    volumes: 
    - /root/nginx/html:/usr/share/nginx/html  #挂载:前面是挂载到哪儿,后面是nginx得配置目录
    - /root/nginx/nginx.conf:/etc/nginx/nginx.conf
    privileged: true   #解决nginx得文件调用权限的问题
  vueblog:
     image: vueblog:latest
     build: .
     ports:
     - 8888:8888   
  • 由于我直接用服务器的redis和mysql,所以这里边没有配置redis和mysql

编写Dockerfile

Dockerfile 就是用来构建docker镜像的构建文件!命令脚本!

通过这个脚本可以生成镜像,镜像是一层一层的,脚本是一个个的命令,每个命令都是一层!

FROM java:8
EXPOSE 8888
ADD blog-api-1.0-SNAPSHOT.jar app.jar   #前半部分,自己项目打包后的名称!
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar","--spring.profiles.active=prod"]

编写Nginx的配置

worker_processes  1;
events { 
   
    worker_connections  1024;
}
http { 
   
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;

    server { 
   
        listen       80; # 端口
        server_name  localhost;

        location / { 
   
            root   /usr/share/nginx/html;
            try_files  $uri  $uri/  /index.html last;  #千万加上!
            index  index.html index.htm;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html { 
   
            root   html;
        }
    }
}

4、打包

前端

在这里插入图片描述

执行npm run dev,在dist下把这两放到html下即可
在这里插入图片描述

后端

在这里插入图片描述

reids设置

关闭保护

在这里插入图片描述

redis密码

在这里插入图片描述

数据库设置

在这里插入图片描述

sqlyog连接服务器数据库

在这里插入图片描述

打包

在这里插入图片描述

直接放到root下

在这里插入图片描述

然后直接启动

docker-compose up 
docker0compose up -d # 后台启动 让网站一直启动

参考
Docker-Compose + Nginx 部署前后端分离项目
教你Docker+nginx部署SpringBoot+vue前后端分离项目
使用docker部署springboot项目并连接上mysql数据库

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/180580.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号