做百度手机网站,专门做网站的公司与外包公司,24小时妇科免费问医生,网站互点都是怎么做的Windows Docker部署springboot微服务
前言
偶然的机会让我能够实操在Windows server 2019版本的服务器上进行springCloud服务的部署
过程中深刻的体会到了为什么Docker要推荐使用Linux系列的系统进行操作
遇到的问题
springboot镜像打包微服务启动后nacos连不上使用的基础…Windows Docker部署springboot微服务
前言
偶然的机会让我能够实操在Windows server 2019版本的服务器上进行springCloud服务的部署
过程中深刻的体会到了为什么Docker要推荐使用Linux系列的系统进行操作
遇到的问题
springboot镜像打包微服务启动后nacos连不上使用的基础镜像openjdk在WindowsDocker上的问题DockerFile启动与Docker-Compose启动后的一些区别springboot在WindowsDocker镜像中的编码问题
正文
Windows Server安装Docker
DockerByWindowsDesktop下载安装包
服务器版的WindowsServer在任务管理器中看CPU选项都是没有虚拟化选项的所以开不开Hyper-V无所谓也不支持WSL2
下载好后双击安装包直接自动安装了中间只需要选择是否在桌面创建快捷方式
等待启动的过程中弹出报错就选左边第一个reset会自动修复
如果还是不行就在状态栏中的小鲸鱼标志上右键单击有一个switch Windows
安装启动完成后修改配置文件右键单击小鲸鱼—setting {data-root: E:\\Docker\\Dockerimage,debug: false,experimental: false,features: {buildkit: true},hosts: [0.0.0.0:2375,tcp://0.0.0.0:2375],insecure-registries: [],registry-mirrors: [https://docker.mirrors.ustc.edu.cn,https://registry.docker-cn.com,http://hub-mirror.c.163.com,https://mirror.ccs.tencentyun.com]
}参数解释
data-root修改docker数据存储位置一般来说服务器的C盘空间都不够大hosts开放docker远程连接registry-mirrors设置国内镜像下载地址
到此为止在服务器上的配置就结束了云服务器需要开放2375端口给自己 IDEA操作
我的idea版本 idea插件 idea连接Docker服务器
进入idea设置PreferencesSetting | Build, Execution, Deployment | Docker docker镜像打包
WindowsDocker的DockerFile
我使用的基础镜像为openjdk:11-jre
以下是我的DockerFile示例
# 基础镜像
FROM openjdk:11-jre
# 作者
LABEL maintainerfatebug
# 设置时区与编码
ENV LANG C.UTF-8
ENV TZAsia/Shanghai
# 暴露端口
EXPOSE 13390:13390
# 创建目录
RUN mkdir -p C:\\Users\\fatebug\\logs
# 设置字符集
RUN chcp 65001
# 复制 jar 文件到目录
COPY ./jar/name.jar C:\\Users\\fatebug\\name.jar
# 设置工作目录
WORKDIR C:/Users/fatebug
# 启动系统服务
CMD [cmd, /k, chcp 65001]
ENTRYPOINT [java, -jar, name.jar, -Dfile.encodingUTF-8, -Xms256m, -Xmx256m, -XX:PermSize128m, -XX:MaxPermSize512M]
# 映射日志目录与字体目录
VOLUME C:\\Users\\fatebug\\logs
VOLUME C:\\Windows\\Fonts这里就出现了问题3,openjdk:11-jre的Windows特供版中使用的所有路径都是Windows路径
方法一
MavenDocker镜像编译直接上传到Docker中
DockerFile放置在项目src/main/resources目录下按注释去修改为正确的文件目录
Maven添加plugin
plugingroupIdcom.spotify/groupIdartifactIddocker-maven-plugin/artifactIdversion1.2.2/versionconfiguration!--远程docker地址--dockerHosthttp://你的服务器IP:2375/dockerHost!--镜像名称,前缀/项目名--imageName前缀/${project.artifactId}/imageName!--dockerFile的位置--dockerDirectory${project.basedir}/src/main/resources/dockerDirectoryresourcesresourcetargetPath//targetPath!--默认的target文件夹位置--directory${project.build.directory}/directory!--最终名称.jar--include${project.build.finalName}.jar/include/resource/resources/configuration/plugin正常Maven编译打包后点击idea Maven窗口中该模块下的plugin进行docker镜像构建 构建完成后在服务器的镜像中可以看到改镜像我使用的是idea中的docker进行查看 启动命令开放端口挂载目录
docker run -p 13390:13390 -v E:\projectfatebug\logs:C:\Users\fatebug\logs --name demo --pull missing 镜像名:latest 方式二
使用docker-compose进行打包运行
编写docker-compose
version : 3.8
services:gateway:container_name: gatewayenvironment:- TZAsia/Shanghai- PYTHONIOENCODINGutf-8build:context: ./fatebug/gatewaydockerfile: Dockerfileports:- 13390:13390volumes:- E:\projectfatebug\logs:C:\Users\fatebug\logs- E:\projectfatebug\Fonts:C:\Windows\Fonts将各个文件放到对应的地方按需求修改对应的目录
点击运行即可自动运行到服务器Docker前提是需要idea的Docker插件连接了服务器Docker 问题出现
WindowsDocker运行的微服务连接不了服务器跑的nacos
解决使用IP访问并且在bootstrap.yml中设置spring.cloud.nacos.discovery.ip服务器IP
如果是Linux版本的话就可以使用Networkhost的本机模式来直接使用宿主机的端口但是Windows不行WindowsServer版本的Docker只有两种模式 DockerFile启动与Docker-Compose启动后的一些区别
Docker-Compose启动后由于未知原因大概率是openjdk镜像Windows版本导致输出日志字符集不正确使用命令行输入chcp输出code为0
DockerFile启动后没有发现这个问题
springboot在WindowsDocker镜像中的编码问题
解决在所有的获取字节数组和需要字符集的地方指定UTF-8