程序地带

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


一键部署基于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:ProgramFilesDockerdocker-compose.exe

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


PS C:Windowssystem32> 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" ]

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


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/mekave/article/details/111246018

随机推荐

标准化算法_解析数据标准化(一)

标准化算法_解析数据标准化(一)

在一些实际问题中,我们得到的样本数据都是多个维度的,即一个样本是用多个特征来表征的。比如在预测房价的问题中,影响房价y的因素有房子面积x1、卧室数量x2等。这...

网易公开课App 阅读(783)

shell 脚本操作informix数据库

shell脚本操作informix数据库的简单模板:functionName(){dbaccess<<!database库名;sql语句;!}栗子1:更新数据functionName(){...

渊婷岳 阅读(643)

基本DOS命令

基本DOS命令

打开CMD的方式Win7图标–所有程序–附件–命令提示符(win7);开始–系统–命令提示符(win10)。Win键+R运行的打开输入框输入cmd回车即可。在任意文件夹下面,通过...

李沐泽 阅读(227)

MySQL优化(5):分区

分区:分区也是MySQL优化中的一个重要方式将一个表中的数据和索引,分散到不同的文件中进行存储通常情况下,一个表,对应一组数据和索引文件,一个表的数据和索引集中存储在这组文件中当一个表出现了大量的记录...

4ra1n 阅读(990)

MySQL 慢查询日志

简介MySQL慢查询日志是排查问题SQL语句,以及检查当前MySQL性能的一个重要功能。查看是否开启慢查询功能:mysql>mysql>showvariableslike"slo...

未月廿三 阅读(807)

MySQL优化(4):查询缓存

查询缓存:MySQL提供的数据缓存QueryCache,用于缓存SELECT查询的结果默认不开启,需要在配置文件中开启缓存(my.ini/my.cnf)在[mysqld]段中,修改query_cach...

4ra1n 阅读(676)

怎么画六面体网格_Hypermesh 0002 六面体网格画法2

一深夜瞎侃由于更新慢了,先跟大家说声抱歉。但是有一点请放心,我肯定会不断更新并分享关于画网格的干货。当然大家也可以私信我,告诉我你们想了解什么,...

小浪花VG 阅读(474)