基于Docker Compose 的Java Web环境发布,Springboot项目快速部署

本文指导如何在Windows上通过Docker部署SSL加密的web应用,涉及docker-compose配置、dockerfile编写和相关操作步骤,适合开发者快速搭建HTTPS环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一键部署基于SSL的web项目,实现https访问。
文档目录,文末附相关dockerfile配置
在这里插入图片描述

准备文件

1、Docker Desktop Installer.exe
2、wsl_update_x64.msi(解决windos下Docker安装启动失败问题:wsl 2 installation is incomplete)

安装docker

双击运行Docker Desktop Installer.exe即可,安装结束,重启电脑,如果重启后,docker提示启动失败,wsl2 未完成安装,则安装wsl_update_x64.msi即可。

安装docker-compose

1、使用管理员权限打开power shell
2、执行以下命令,官方教程

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
Invoke-WebRequest "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile $Env:ProgramFiles\Docker\docker-compose.exe

等待安装结束,执行命令查询是否安装成功

PS C:\Windows\system32> docker-compose --version
docker-compose version 1.27.4, build 40524192

编写docker-compose.yml

version: "3"
services:
  jdk:
    build:
      context: ./services/jdk
      dockerfile: Dockerfile
    container_name: jdk
    environment:
      - TZ=Asia/Shanghai
    networks:
      - default
  redis:
    build:
      context: ./services/redis
      dockerfile: Dockerfile
    container_name: redis
    ports:
      - "6379:6379"
    volumes:
      - ./services/redis/redis.conf:/etc/redis.conf:ro
      - /usr/local/yuri/data/redis:/data/:rw
    restart: always
    entrypoint: ["redis-server", "/etc/redis.conf"]
    environment:
      - TZ=Asia/Shanghai
    networks:
      - default
  nginx:
    build:
      context: ./services/nginx
      dockerfile: Dockerfile
    container_name: nginx
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - /usr/local/yuri/www:/www/:rw
      - ./services/nginx/ssl:/ssl:rw
      - ./services/nginx/nginx.conf:/etc/nginx/nginx.conf:ro
      - /usr/local/yuri/logs/nginx:/var/log/nginx/:rw
    environment:
      - TZ=Asia/Shanghai
    restart: always
    networks:
      - default
  mysql:
    image: mysql:5.7.28
    container_name: mysql
    ports:
      - "3306:3306"
    volumes:
      - ./services/mysql/mysql.cnf:/etc/mysql/conf.d/mysql.cnf:ro
      - /usr/local/yuri/data/mysql:/var/lib/mysql/:rw
    restart: always
    networks:
      - default
    environment:
      MYSQL_ROOT_PASSWORD: "123456"
      TZ: Asia/Shanghai
  app:
    build:
      context: ./services/app
      dockerfile: Dockerfile
    container_name: app
    restart: always
    ports:
      - "8080:8080"
    #volumes:
     # - /usr/local/cnzv/cnzv.jar:/app/cnzv.jar:ro
    environment:
      - JAVA_OPTS=-Xmx256M -Dspring.profiles.active=test -Duser.timezone=GMT+08
      - TZ=Asia/Shanghai
    links:
      - redis
    depends_on:
      - jdk
      - nginx
      - redis
      - mysql
networks:
  default:

执行构建命令

docker-compose build

执行启动命令

docker-compose up -d 

打开页面查看前后端是否正常

相关dockefile

app/dockerfile

FROM docker_jdk:latest
MAINTAINER caowenjun/496190712@qq.com
# 为Dockerfile中所有RUN、CMD、ENTRYPOINT、COPY和ADD指令设定工作目录
RUN mkdir app
#根据自己定义的项目名称进行修改
ADD cms-app.jar /app/cms-app.jar
# 在容器启动的时候执行,作用于容器层,dockerfile里有多条时只允许执行最后一条
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app/cms-app.jar"]

jdk/dockerfile

# 基于cntos7,如果没有这个镜像那么它会下载这个镜像。
FROM centos:8
# 创建者(这个可以不写)
MAINTAINER caowenjun/496190712@qq.com
# 为Dockerfile中所有RUN、CMD、ENTRYPOINT、COPY和ADD指令设定工作目录
WORKDIR /usr
# 执行命令(这里创建了一个目录)
RUN mkdir /usr/local/java
# 和copy一样,复制文件到指定目录,但是copy不能解压,add自动解压
ADD jdk-8u211-linux-x64.tar.gz /usr/local/java
# 重命名(不知道文件名可以现在宿主机解压后看一下)
RUN ln -s /usr/local/java/jdk1.8.0_211 /usr/local/java/jdk
# 设置环境变量
ENV JAVA_HOME /usr/local/java/jdk
ENV JRE_HOME ${JAVA_HOME}/jre
ENV CLASSPATH .:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH ${JAVA_HOME}/bin:$PATH
RUN java -version

mysql/dockerfile

nginx/dockerfile

FROM nginx
MAINTAINER caowenjun/496190712@qq.com
RUN mkdir web
COPY web /web
COPY nginx.conf /etc/nginx/nginx.conf
COPY ssl/bestavi/* /etc/nginx/
COPY ssl/cnzv/* /etc/nginx/
COPY ssl/caowenjun/* /etc/nginx/
# 复制前端代码
# COPY static-html-directory /usr/share/nginx/html
EXPOSE 80 443

redis/dockerfile

FROM hesens/redis
MAINTAINER caowenjun/496190712@qq.com
COPY redis.conf /usr/local/etc/redis/redis.conf
EXPOSE 6379
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]

如有错误,请指正,如果帮到您了,请点赞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值