环境:
操作系统:win10家庭版
Docker:Docker Windows 18.03.1-ce-win64
1. 开启Hyper-V
docker for windows要安装在win10专业版,并且要打开Hyperv,如果我们的电脑是家庭版就要做如下操作:
新建hyperv.cmd文件,内容如下:
pushd "%~dp0"
dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt
for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"
del hyper-v.txt
Dism /online /enable-feature /featurename:Microsoft-Hyper-V-All /LimitAccess /ALL
以管理员身份执行hyperv.cmd文件。
如果系统要你重启,便重启。
在控制面板->程序和功能->启用或关闭Windows功能打开Hyper-V。
2. 伪装成win10专业版
以管理员身份打开cmd。
执行如下命令:
REG ADD "HKEY_LOCAL_MACHINE\software\Microsoft\Windows NT\CurrentVersion" /v EditionId /T REG_EXPAND_SZ /d Professional /F
3. 下载Docker for Windows
国内镜像:
https://oomake.com/download/docker-windows (百度网盘)
https://mirrors.ustc.edu.cn/docker-ce/ (版本更新不及时)
下载后直接安装,安装时注意取消勾选window容器(默认不会勾选)。
Docker安装成功后,执行cmd命令docker version有输出版本号即表示安装成功
这里我用的demo项目是现在比较火的项目ruoyi-cloud, gite地址:https://gitee.com/y_project/RuoYi-Cloud.git(没有git自己安装下)
也可以自己找个练手的spring cloud项目,重点是打包流程
1.idea导入项目后,先确保自己要项目能正常运行,我这里使用dockerfile-maven-plugin插件打包
在pom文件里面加入下面的依赖
<build>
<finalName>ruoyi-gatewayfinalName>
<plugins>
<plugin>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-maven-pluginartifactId>
<version>2.4.1version>
<executions>
<execution>
<goals>
<goal>repackagegoal>
goals>
execution>
executions>
plugin>
<plugin>
<groupId>com.spotifygroupId>
<artifactId>dockerfile-maven-pluginartifactId>
<version>1.3.6version>
<configuration>
<repository>dockerHub账号/dockerHub仓库repository>
<buildArgs>
<JAR_FILE>target/${project.build.finalName}.jarJAR_FILE>
buildArgs>
<tag>${project.build.finalName}-1.0tag>
configuration>
plugin>
plugins>
build>
注意:
标签里表示你打包镜像要上传的的仓库名,后面我要将到本地打包的镜像上传到一个仓库让别人也可以拉取,注册一个dockerhub(https://hub.docker.com)账号并创建一个仓库,比如你dockerhub的账号是abc,创建的仓库名为123,那么 标签里就是 abc/123,如果这里错了后面使用docker push命令上传镜像到指定仓库就会失败
2.在要打包的项目根路径下编写Dockerfile文件
内容如下:
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
3.打包镜像
系统变量里面新增变量DOCKER_HOST,变量值为tcp://${ip}:2375,我这里就是用的127.0.0.1
启动docker for windows,找到settings勾选下面的
以上都弄好后,在idea选择要打包的项目右键点击open in terminal打开终端
输入打包命令:mvn install dockerfile:build
打包好后docker images可以看到已经打包好的镜像,按照下面的格式推送镜像到指定仓库
docker push dockerhub账号/dockerhub仓库名:镜像tag
如果报错提示说要你登录就docker login登录后再执行上面的命令
4.编写compose.yaml文件使用docker-compose编排镜像(这是为了后面一键启动所有服务,不需要可以跳过,使用docker run 镜像id 即可启动)
编写compose.yaml文件,格式参考如下
version: '3'
services:
ruoyi-gateway:
image: dockerHub账号/dockerHub仓库:镜像tag名
restart: always
ports:
- 8090:8090
ruoyi-auth:
image: dockerHub账号/dockerHub仓库:镜像tag名
restart: always
ports:
- 8900:8900
ruoyi-system:
image: dockerHub账号/dockerHub仓库:镜像tag名
restart: always
ports:
- 9201:9201
使用如下命令(-d表示后台启动)启动所有服务
docker-compose -f compose.yaml up -d
如果别人要拉取你仓库的镜像,使用docker pull dockerHub账号/dockerHub仓库:镜像tag名,来拉取镜像