如何通过docker将你的Java项目部署到云服务器上?

一、项目运行的实质

1.Spring Boot 默认内置了一个 Web 容器(比如 Tomcat),启动后就会监听某个端口,比如:

server:
  port: 8090

只要运行了java -jar app.jar就自动启动了一个http服务在服务器的8090端口

2.你本地localhost或者云服务器放行了这个端口,所以你能通过https://127.0.0.1:8090访问到Spring Boot项目

3.Spring Boot默认监听的是0.0.0.0,所以外部浏览器访问https://127.0.0.1:8090能被接收

server:
  address: 0.0.0.0  # 或者干脆不写,默认就是这个

4.当你直接通过浏览器打开index.html,你会发现localhost:63342

二、打包项目

先点击clean 再点击install,也可以在终端上执行mvn clean install

然后,项目栏会生成一个target目录,目录下有一个项目的jar包

三、构建镜像

将工程jar包构建成镜像

一、使用Dockerfile构建镜像

Dockerfile:

# 选择基础镜像
FROM openjdk:17-jdk-slim

# 作者
MAINTAINER author

# 配置
ENV PARAMS=""

# 时区
ENV TZ=PRC
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone

# 将jar包添加到容器中
ADD app.jar /app.jar

#容器启动时运行的命令
ENTRYPOINT ["sh","-c","java -jar $JAVA_OPTS app.jar $PARAMS"]
docker build -t author/app:1.0 -f Dockerfile .

二、本地构建镜像

但是这里构建镜像时有可能因为电脑版本不同会出现一些问题:Mac电脑可以直接将以上命令保存成一个build.sh文件,然后点击绿色三角会自动构建镜像到本地。然后通过docker push 推送到dockerhub。

三、云服务器构建镜像

将你的Dockerfile、build.sh和jar包上传到云服务器

执行./build.sh即可构建镜像,然后执行docker images查看是否构建成功。

四、上传镜像

一、方法一:上传到dockerhub

首先需要再dockerhub上创建一个仓库,namespace需要和你执行docker build 里的author一样,仓库名称和镜像名称一样。

从本地点击push to hub推送到dockerhub

由于我本地wsl和dockerdesk系统原因一直安装不成功,云服务器不知道为什么也不能推送到hub,所以使用了方法二——上传到阿里云。后续运行容器时再从阿里云拉取镜像。

二、方法二:从阿里云拉取镜像

1.首先仍然是创建一个同命名空间同仓库名称的仓库

2.然后需要绑定一下你代码仓库地址的账号

3.根据操作指南将本地或者云服务器上的镜像推送到阿里云(注意记住自己的阿里云密码)

登录打标签然后push(操作指南里有)

五、拉取镜像

一.安装环境

#Docker Compose版本
version: '3'
services:
#定义一个名为Redis的服务
  redis:
    #拉取容器的地址
    image: 
    container_name: redis
    restart: always
    #设置容器的主机名
    hostname: redis
    #特权模式允许容器访问宿主机的硬件资源
    privileged: true
    #将容器内部的端口映射到宿主机
    ports:
      - 16379:6379
    #卷挂载——将宿主机的./redis/redis.conf挂载到容器的路径
    volumes:
      - ./redis/redis.conf:/usr/local/etc/redis/redis.conf
    #指定容器启动时运行的命令
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - my-network
    healthcheck:
      test: [ "CMD", "redis-cli", "ping" ]
      interval: 10s
      timeout: 5s
      retries: 3
  redis-admin:
    image:
    container_name: redis-admin
    hostname: redis-commander
    restart: always
    ports:
      - 8081:8081
    #设置容器的环境变量
    environment:
      - REDIS_HOSTS=local:redis:6379
      - HTTP_USER=admin
      - HTTP_PASSWORD=admin
      - LANG=C.UTF-8
      - LANGUAGE=C.UTF-8
      - LC_ALL=C.UTF-8
    networks:
      - my-network
    depends_on:
      redis:
        condition: service_healthy
#桥接网络允许容器之间通过网络通信
networks:
  my-network:
    driver: bridge
docker-compose -f docker-compose-environment-aliyun.yml up -d

二.安装软件

 yourcontainerName:
#填写你的镜像,一般是阿里云给你的特定字符串/namespace/镜像名称:版本号
    image: 
    container_name: 
    restart: on-failure
    ports:
#     宿主机端口:容器内应用端口
      - "8090:8090"
#上一步安装的环境的一些配置,根据自己配置的环境来填写
    environment:
      - TZ=PRC
      - SERVER_PORT=8090
      - SPRING_DATASOURCE_USERNAME=
      - SPRING_DATASOURCE_PASSWORD=
      - SPRING_DATASOURCE_URL=
      - SPRING_DATASOURCE_DRIVER_CLASS_NAME=
      - REDIS_SDK_CONFIG_HOST=redis
      - REDIS_SDK_CONFIG_PORT=6379
    volumes:
      - ./log:/data/log
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "3"
    networks:
      - my-network
docker-compose -f docker-compose-app-v1.0.yml up -d

如果有哪里不理解也可以在评论区提出问题!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值