环境准备
启动Microsoft Hyper-V
在电脑上打开“控制面板”->“程序”-> “启动或关闭Windows功能”
安装docker
1.1. 下载地址
1.2. 双击程序,如下:
1.3. 点击OK,确定安装WSL
1.4. 等待安装完毕
1.5. 安装完毕后,点击Close and restart
1.6. 电脑重启后,点击Docker程序会看到如下界面
1.7. 默认勾选,点击Finish即可完成 
1.8. 等待启动Docker引擎
1.9. 报错如下
1.10. 重新更新一下wsl版本,如下命令
1.11. 报错如下:点击restart重启即可
1.12. 现在程序正常启动
配置阿里云镜像加速
配置一下镜像代理,便于更快速的拉取资源
地址是免费的,每个人都有
制作镜像
以制作accept包为例
1. 准备Dockerfile
需要修改的地方
1、VOLUME挂载点,有些应用需要跟宿主机挂载额外的目录,比如打印目录(/usr/print)
2、jar包名称
3、暴露的端口
FROM registry.cn-hangzhou.aliyuncs.com/lanxy88/gtmap-java:v1
# 设置容器内的挂载点
VOLUME /cfg /logs /tmp
# 将 jar 文件添加到容器中
ADD ./realestate-accept-3.3.0.jar app.jar
# 暴露端口
EXPOSE 8686
# 设置环境变量
ENV JAVA_OPTS=""
# 设置启动命令
ENTRYPOINT [ "sh", "-c", "java $JAVA_OPTS -jar /app.jar --spring.config.location=/cfg/ --logging.path=/logs/ --server.tomcat.basedir=/tmp/" ]
2. 准备Jar包
将Dockerfile和jar包放在同一个目录下
3. 运行打包脚本
需要修改的地方
1、imageRepo:设置为自己在阿里云创建的镜像仓库,参考
此处为语雀内容卡片,点击链接查看:law-enforcement.yuque.com/org-wiki-la…
@echo off
:: 启用延迟变量扩展
setlocal enabledelayedexpansion
:: 设置代码页为 UTF-8,避免中文乱码
chcp 65001 >nul
:: 设置 Docker Registry 地址
set repo=registry.cn-hangzhou.aliyuncs.com
set imageRepo=registry.cn-hangzhou.aliyuncs.com/fangyinwei
:: 查找所有 jar 文件
set jar_count=0
for %%f in (*.jar) do (
set /a jar_count+=1
set jar_file_!jar_count!=%%f
echo !jar_count!. %%f
)
:: 检查是否找到 jar 文件
if %jar_count%==0 (
echo 未找到 jar 文件,请确保脚本目录下存在 jar 文件!
pause
exit /b 1
)
:: 提示用户选择 jar 文件
:select_jar
set /p jar_index=请选择要使用的 jar 文件编号:
if "%jar_index%"=="" goto select_jar
if %jar_index% lss 1 goto select_jar
if %jar_index% gtr %jar_count% goto select_jar
:: 获取用户选择的 jar 文件
set jar_file=!jar_file_%jar_index%!
:: 从 jar 文件名中提取项目名称和版本号
:: 找到最后一个 - 的位置
set "jar_file_name=!jar_file!"
set "last_dash_index=0"
:find_last_dash
set "char=!jar_file_name:~%last_dash_index%,1!"
if "%char%"=="" goto end_find_last_dash
if "%char%"=="-" set "last_dash_pos=!last_dash_index!"
set /a last_dash_index+=1
goto find_last_dash
:end_find_last_dash
:: 提取 project.name 和 project.version
set "project.name=!jar_file:~0,%last_dash_pos%!"
set /a version_start_pos=%last_dash_pos%+1
set "project.version=!jar_file:~%version_start_pos%!"
set "project.version=!project.version:.jar=!"
:: 输出提取的项目名称和版本号
echo 从 jar 文件名中提取的项目名称: %project.name%
echo 从 jar 文件名中提取的版本号: %project.version%
:: 构建 Docker 镜像
echo 正在构建 Docker 镜像 (%project.name%:%project.version%)...
docker build --no-cache=true -t %project.name%:%project.version% .
:: 检查 Docker 构建是否成功
if errorlevel 1 (
echo Docker 构建失败,请检查 Dockerfile 是否正确!
pause
exit /b 1
)
:: 登录远程仓库
echo 登录远程仓库...
docker login registry.cn-hangzhou.aliyuncs.com/lanxy88
:: 为本地镜像打标签
echo 为本地镜像打标签...
docker tag %project.name%:%project.version% %imageRepo%/%project.name%:%project.version%
:: 推送镜像到远程仓库
echo 推送镜像到远程仓库... %imageRepo%/%project.name%:%project.version%
docker push %imageRepo%/%project.name%:%project.version%
:: 检查 Docker 推送是否成功
if errorlevel 1 (
echo Docker 推送失败,请检查网络连接和仓库权限!
pause
exit /b 1
)
:: 完成提示
echo Docker 镜像 (%project.name%:%project.version%) 已成功构建并推送到仓库 (%imageRepo%)!
:: 暂停脚本,等待用户按任意键退出
pause
容器可视化管理
Docker DeskTop
Portainer
docker run -p 8444:8000 -p 9443:9443 --restart=always -d portainer/portainer-ce
中间件
Mysql-8.0
添加环境变量COMPOSE_CONVERT_WINDOWS_PATHS将其
docker run --restart=always -v /D/soft/docker/volumes/mysql8/conf/my.cnf:/etc/mysql/my.cnf -v /D/soft/docker/volumes/mysql8/data:/var/lib/mysql -v /D/soft/docker/volumes/mysql8/logs:/var/log/mysql -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql:8.0.32 --default_authentication_plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_general_ci
Redis-6.2.7
docker run --volume=D:\soft\docker\volumes\redis\data:/data --volume=/data --network=bridge --workdir=/data -p 6379:6379 --restart=always --runtime=runc --name=redis -d redis:6.2.7
RabbitMq-3.8
docker run --env=RABBITMQ_DEFAULT_PASS="guest" --env=RABBITMQ_DEFAULT_USER="guest" -p 15672:15672 -p 5672:5672 --restart=always --runtime=runc --name=rabbitmq -d rabbitmq:3.8-management
Elasticsearch-5.1.6
docker run --env=ES_JAVA_OPTS="-Xms1024m -Xmx1024m" --volume=D:\soft\docker\volumes\es\data:/usr/share/elasticsearch/data --volume=/usr/share/elasticsearch/data --network=bridge --workdir=/usr/share/elasticsearch -p 9200:9200 -p 9300:9300 --restart=always --runtime=runc --name=elasticsearch -d elasticsearch:5.6.15
docker-compose.yaml
version: '3.8'
services:
redis:
image: redis:6.2.7
volumes:
- D:\soft\docker\volumes\redis\data:/data
ports:
- "6379:6379"
restart: always
network_mode: bridge
working_dir: /data
runtime: runc
rabbitmq:
image: rabbitmq:3.8-management
environment:
- RABBITMQ_DEFAULT_USER=guest
- RABBITMQ_DEFAULT_PASS=guest
ports:
- "15672:15672"
- "5672:5672"
restart: always
runtime: runc
elasticsearch:
image: elasticsearch:5.6.15
environment:
- ES_JAVA_OPTS=-Xms1024m -Xmx1024m
volumes:
- D:\soft\docker\volumes\es\data:/usr/share/elasticsearch/data
ports:
- "9200:9200"
- "9300:9300"
restart: always
network_mode: bridge
working_dir: /usr/share/elasticsearch
runtime: runc