怎么用docker部署一个spring boot项目

138 阅读2分钟

用maven打包

mvn packge

打包过后的文件一般在target文件夹里

以下命令都可以打包

Mvn package: 打包项目到本项目,一般在target目录下

Mvn install: 打包项目到本地仓库,需要在maven中设置

mvn deploy:打包上传到远程仓库,如:私服nexus等,需要配置pom 文件。

Docker部分

  1. Docker hub一定要登录在本地-> docker login
  2. 创建docker file(Dockerfile是一个文本文件,其中包含一系列的指令和配置,用于定义如何构建一个Docker容器镜像)

FROM amazoncorretto:21   #这一行指定了基础镜像,可以把它理解为项目依赖

#添加标签信息, 新版docker不建议使用MAINTAINER参数
LABEL maintainer="User <moon@example.com>"
LABEL description="My Java Application"
LABEL version="1.0"
LABEL license="MIT"

#暴露8085端口
EXPOSE 8085

#复制本地的backend-0.0.1-SNAPSHOT.jar并重命名为app.jar
ADD target/backend-0.0.1-SNAPSHOT.jar app.jar

#入口,开始运行时执行的命令,这里是-jar不是.jar,.jar会报错
ENTRYPOINT ["java","-jar","/app.jar"]

3.构建docker

在包含 Dockerfile 的目录中运行以下命令来构建 Docker 镜像:

docker build 

之后会显示ImageID

4.推送到docker hub

首先,标记您的镜像:

docker tag your-imageID username/repository:tagname

其中,your-image 是您的本地镜像名称,username 是您的 Docker Hub 用户名,repository 是您要推送到的仓库名,而 tag 是您为这个版本的镜像设置的标签(如 latest)。

然后,推送到 Docker Hub:

docker push yourusername/your-app-name:tagname

注意这两个tagname名字必须相同

  1. 创建docker-compose.yml

docker-compose.yml 文件是一个配置文件,用于告诉计算机如何运行多个容器化应用程序的不同部分。就是一个配置文件告诉docker以什么样的配置运行docker Image

version: '3'

services:
  app:
    image: 你的docker image
    ports:
      - "8085:8085"  #"主机端口:容器端口"主机的端口 8085 会映射到容器的端口 8085
    environment:
    #这里的配置可以覆盖application里面的配置
      - SPRING_DATASOURCE_URL=jdbc:postgresql:
      - SPRING_DATASOURCE_USERNAME=TestUser
      - SPRING_DATASOURCE_PASSWORD=scsbchdbsjhdbsjcs

在服务器上的操作

  1. 上传docker-compose.yml到服务器
  2. 在服务器上也要docker login,注意在服务器上大多数docker 命令都要在前面加sudo提权
  3. 在服务器上下载docker
  4. Docker compose up -d -d代表使容器在后台运行,并不占用终端。
  5. 记得一定要在服务器设置里面打开防火墙,在测试环境下可以开放所有端口,因为如果指定的端口被占用了会切换到另一个端口
  6. 访问不了 docker ps查看正在运行的container,如果开不到刚才启动的container说明程序错误,可以用docer ps -a查看所有container。一般都是image没配置对,或者docker-compose.yml里缺少必填的参数