Docker 部署 Web 项目(优化篇)

之前写过一篇 Docker 部署 Web 项目的文章,主要介绍了使用 Dockerfile 和 Docker Compose 构造镜像和启动容器来部署 Web 项目

本篇文章主要对之前的镜像和容器进行优化(减少镜像大小、docker-compose 文件完善等)

📖 服务器目录结构

  • 新增 jdk 目录,用来构建 JDK 镜像
  • 删除 start.sh 文件
—— root
  |—— mall  // 根目录
	  |—— pack 
		  |—— back // 后端
		  	  |-- Dockerfile // 构建镜像的文本文件
		  	  |-- core-0.0.1-SNAPSHOT.jar
		  	  |-- deploy.sh		// 用来将 jar 包移动到服务器上的脚本文件
    		  |-- docker-compose.yaml		// 启动容器
		  |—— web // 前端
		  	  |-- Dockerfile
		  	  |-- dist
		  	  |-- deploy.sh		// 用来将 dist 文件夹移动到服务器上的脚本文件
		  	  |-- docker-compose.yaml		// 启动容器
		  	  |-- nginx.conf	// nginx 配置文件
		  |—— jdk // jdk 环境
		  	  |-- Dockerfile
		  	  |-- jdk-17.0.5_linux-x64_bin.tar.gz	// JDK
		  	  |-- jdk-17.0.5	// jdk-17.0.5_linux-x64_bin.tar.gz 解压后的文件夹
	  |—— mysql // 数据库(以下三个目录,启动 MySQL 容器时自动创建)
		  |-- conf
		  |-- data
		  |-- logs

🐳 Docker 学习

最近正在系统学习 Docker 的相关知识(看的视频,分享一个配套的学习网站),包括 Docker 的存储、网络、Dockerfile、Docker Conpose、Docker swarm 等知识。学习过程中,不断加深了自己对 Docker 的理解,想着之前使用 Docker 部署过项目,又重新看了当时编写的 Dockerfile 和 docker-compose.yaml 文件,发现还有非常大的优化空间,也可以检验自己的学习情况。

🐳 优化

镜像大小、构建时间优化

之前构建后端项目的 Dockerfile 文件,将项目运行环境和项目启动编写到了一起。每次项目更新重新构建镜像的时候,都要执行一遍 JDK 环境搭建的流程,不仅耗时更长、而且浪费资源。💡 优化思路:拆分 Dockerfile 文件,分别构建 JDK 环境镜像和项目启动镜像

  1. 构建 JDK 17 镜像

​ 基础镜像更换为 Ubuntu 20.04,相比 Centos 7,镜像体积更小。

  • Dockerfile 文件
# 基础镜像
FROM ubuntu:20.04
# 更新软件源
RUN apt-get update
# 安装字体支持
RUN apt-get install -y fontconfig
# 清理缓存
RUN apt-get clean
# 添加JDK17,并解压在/usr/local/jdk
COPY ./jdk-17.0.5 /usr/local/jdk
# 配置jdk17 环境变量
ENV JAVA_HOME /usr/local/jdk
ENV PATH=$JAVA_HOME/bin:$PATH
# 设置系统编码
ENV LANG C.UTF-8
  • 构建 JDK 镜像
docker build -t jdk_17.0.5 .
  1. 拆分后的 Dockerfile 文件(项目启动镜像)
# 基础镜像(上面我们构建的JDK镜像)
FROM jdk_17.0.5
# 添加springboot jar 包 指定别名为 core.jar
ADD core-0.0.1-SNAPSHOT.jar core.jar

EXPOSE 9998
# 启动容器时运行jar包

ENTRYPOINT ["java","-jar","-Duser.timezone=GMT+8","/core.jar"]

🐋 docker-compose.yaml 文件优化

docker-compose.yaml 文件内容(版本调整、新增构建镜像指令、新增网络)

version: '3.3'
services: # 可以指定多个服务
    mall: # 这个名字随便起 只要有意义
      build:
        context: ./   # Dockerfile 文件位置
      restart: always # 自动开机启动
      image: mall:latest  # 镜像名称
      container_name: mall # 容器名称
      networks:
         - mall-network
      ports: # 指定端口 可以是多个
         - 9998:9998
networks:
  mall-network:

每次项目更新,上传 jar 包到本路径下,然后执行 docker-compose up -d --build 命令即可实现项目更新,更加方便使用

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker部署Web项目的步骤如下: 1. 首先,安装Docker和JDK。可以使用命令docker pull java:8来拉取Java 8的Docker镜像\[1\]。 2. 将打包好的项目Jar包上传到服务器。可以使用命令docker build -t bootdemo-docker .来构建程序镜像\[1\]。 3. 在项目Jar包的同目录下创建Dockerfile,其中包含了构建镜像的相关指令,如添加Jar包、设置容器端口等\[1\]。 4. 使用docker build命令构建程序镜像,例如docker build -t bootdemo-docker .\[1\]。 5. 查看镜像,可以使用docker images命令来查看已构建的镜像\[3\]。 6. 创建容器并运行,可以使用docker run命令来创建并运行容器\[3\]。 7. 查看容器,可以使用docker ps命令来查看正在运行的容器\[3\]。 8. 最后,通过浏览器访问部署Web项目,可以使用容器的IP地址和端口号来访问\[3\]。 以上是使用Docker部署Web项目的一般步骤,具体的操作可以根据实际情况进行调整和优化\[2\]。 #### 引用[.reference_title] - *1* *3* [Docker部署web项目](https://blog.csdn.net/sinat_27933301/article/details/102772838)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Docker 部署 web 项目](https://blog.csdn.net/qq_45745523/article/details/128868493)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值