docker-compose部署SpringBoot项目的两种方式(构建镜像和挂载文件)
Docker是一组平台即服务(PaaS)的产品。它基于操作系统层级的虚拟化技术,将软件与其依赖项打包为容器。托管容器的软件称为Docker引擎。Docker能够帮助开发者在轻量级容器中自动部署应用程序,并使得不同容器中的应用程序彼此隔离,高效工作。该服务有免费和高级版本。它于2013年首次发布,由Docker, Inc. 开发。
Docker是一个开源的平台 ,用于开发、交付和运行应用程序。它能够在Windows,macOS,Linux计算机上运行,并将某一应用程序及其依赖项打包至一个容器中,这些容器可以在任何支持Docker的环境中运行。容器彼此隔离,但可以通过特定的通道相互传递信息。
Docker提供了一个轻量级的虚拟化解决方案。由于运行在同一计算机上的所有容器共享同一个操作系统内核,避免了启动与维护虚拟机的开销。因此相比于传统的虚拟机,Docker容器更加轻便、快速、容易部署。使用Docker,开发者可以避免在两台计算机上运行效果不一致的问题,容器提供了一致的行为,进而使得应用程序在不同环境的计算机上有相同的运行效果。
本例演示docker环境部署SpringBoot项目
演示环境配置列表
- CentOS 7.9.2008
- docker 19.03.1
- docker-compose 1.24.1
一、构建镜像方式
1 创建Dockerfile文件
FROM openjdk:8
LABEL maintainer="yourname@domain.com"
ENV TZ=Asia/Shanghai
EXPOSE 8080# 别名 将mk-admin 改名为app,与docker-compose.yml中对应
ADD mk-admin.jar app.jar
# 服务器配置文件
ADD application.yml application.yml
# 修改这个文件的访问时间和修改时间为当前时间,而不会修改文件的内容。
RUN sh -c 'touch /app.jar'
ENTRYPOINT ["java","-jar","/app.jar"]
2 编写docker-compose.yml文件
version: "3"
services:app-dev:restart: alwayscontainer_name: app-devimage: app:1.0build: . # 表示以当前目录下的Dockerfile开始构建镜像ports:- "8080:8080"volumes:- /etc/localtime:/etc/localtime:ro #将外边时间直接挂载到容器内部,权限只读- ./app/logs:/app/logs- ./app/uploadPath:/app/uploadPath
3 生成应用镜像并启动容器服务
docker-compose up -d --build
docker-compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过使用 YAML 文件来配置应用程序的服务,可以轻松地创建和启动所需的容器。下面是一些常用的 docker-compose 命令及其参数的详细解释:
初始化 docker-compose up 创建并启动所有服务容器。
参数:
-d:在后台运行容器。
--build:在启动前构建或重新构建服务镜像。
--no-deps:不启动服务链接的容器。
构建docker-compose build构建或重新构建服务。
二、挂载文件方式
1 编写docker-compose.yml文件
version: '3.3'
services:mk-admin-java-app:image: java:8 # 使用上面构建的镜像container_name: mk-admin-java-app # 容器名称ports:- "8088:8080" # 将容器的8080端口映射到主机的8088端口volumes:- ./mk-admin.jar:/app/mk-admin.jar- ./application.yml:/app/application.yml- ./logs:/data/logs- ./template:/opt/template- ./file:/data/fileworking_dir: /app # 设置工作目录command: java -jar mk-admin.jar # 启动命令
2 启动容器服务
docker-compose up 创建并启动所有服务容器。
docker-compose up -d