Docker项目部署,从后端到前端部署流程

  1. 准备

    1. 安装docker

      1. 自行下载虚拟机,安装Centos7系统,并能够在虚拟机中启动成功
      2. 下载Xshell,Xftxp
      3. 安装过程

        1. 在Linux中下载yum-utils工具,

        2. 然后指定下载源,让yum去这个位置下载docker sudo yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo,下载docker设置docker的插件: sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

        3. 验证: docker -v, docker images,查看自己的docker是否安装成功
        4. 配置镜像加速: 到阿里云,镜像中设置自己的加速配置 命令在阿里云->容器->容器镜像->管理控制台
        5. 启动docker: systemctl start docker
  2. 安装容器

    1. 拉取镜像文件 docker pull+镜像文件名字,镜像可以去docker-hub官网找

    2. 创建容器 docker run -d --name mysql -p 3306:3306 -e TZ=Asia/Shanghai -e MYSQL_ROOT_PASSWORD = 123 mysql

      1. -d:表示容器后台运行

      2. -p:指明了容器的端口和寄存器的端口相映射

      3. -e:指明了该容器的环境配置

      4. --name:为该容器命名

      5. docker run :固定语法,指在创建一个容器

      6. 最后的mysql指的是拉取的镜像文件的名字,如有需要,在后面写上该镜像文件的版本,name:targ

      7. docker的常见命令:

        1. docker start 容器名,启动该容器

        2. docker stop 容器名,关闭该容器

        3. docker status 容器名,查看容器状态

        4. docker ps 查看所有容器的信息

        5. docker ps -a查看所有的容器

        6. docker logs 容器名,查看该容器的日志

2.项目部署

  1. 后端部署
    1. 根据项目情况安装对应的容器,就那我的比较简单的项目来说,只需要一个Linux操作系统,java运行环境,项目本身,和项目相关的其他的容器,前端代码包
    2. 安装mysql容器,docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123 -e TZ=Asia/Shanghai -v /root/mysql/data:/var/lib/myql -v /root/mysql/init:/docker-entrypoint-initdb.d -v /root/mysql/conf:/etc/mysql/conf.d mysql,这其中涉及到一个数据挂载的问题,在问题说明中有解释,先这么做,数据库的密码是自己设置的
    3. 然后将windows上的数据库导出,通过Xftp传到自己的虚拟机上
    4. 打开mysql容器,docker exec -it mysql bash,然后进入mysql,mysql -u root -p,创建自己项目的数据库,然后通过source /导出的数据库所在的目录,导入数据
    5. 打包Spring项目,打包之前记得把配置文件的ip地址和数据库密码换成docker中mysql的配置,然后把得到的jar包使用Xftp传输到自己的虚拟机中,放到一个文件夹下,使用Dockerfile创建自己的镜像文件
    1. 然后sudo docker build . -t land:1.0 ,这样就创建了自己的docker镜像
    2. 然后 sudo docker run -d -p 8081:8081 --name land  --network 网络名  land这样testnet就创建好了
    3. 创建自己的docker容器,后端项目也成功部署到了docker中,
  2. 前端项目部署
    1. 首先将项目打包一下
    2. 打包成功以后会生成一个dist文件
    3. 然后将dist文件拷贝到Linux系统中,和之前拷贝Java项目的jar包放到一个位置
    4. 我这里把前端单独放到一个位置了
    5. 然后创建Dockerfile文件和一个default.conf文件,前端和后端的Dockerfile文件我都放到最后了
    6. 然后构建自己的镜像,sudo docker build . -t land-vue,
    7. 创建自己的容器,docker run -d --name land-vue -p 8082:8082 --network zhang land-vue

项目测试

  1. 启动前端容器和后端容器,最后访问192.168.101.131:8082出现界面,说明配置成功,
  2. 后端接口成功拿到数据,这样一个简单的java小项目通过docker部署就完成了。

docker-compose.yml 文件自动部署项目

在之前存放文件的文件夹下创建一个文件docker-compose.yml模板去网上找,然后按照模板部署,最后执行docker compose up -d 就能实现自动部署

这里有个小提示,如果nginx.conf不能直接和etc/nginx/nginx.conf挂载的话,直接和整个nginx挂载也能成功

问题说明:

数据卷挂载:当我们创建了容器之后,我们是可以通过docker exec -it 容器名 bash进入咱们一个虚拟的容器终端操作界面,但是里面的内容只有查看功能并不能之际修改所以这时候我们就需要在本地虚拟机中创建一个目录或者文件与容器中指定的目录或文件进行挂载,进行挂载以后当我们对本地虚拟机中被挂载的文件或者目录进行操作的时候就能够把这个修改的内容实时同步到容器中的对应的文件之中,这样就解决了容器内文件不能被修改的问题。

后端项目的Dockerfile:

前端项目的Dockerfile

前端的default.conf