wsl Java开发_WSL2 + Docker + IDEA 开发到发布一步到位
摘要:本文主要介绍了如何用WSL2、Docker、IDEA将Java应用从开发到发布一步到位。
上次介绍了如何在Windows(WSL2) Linux子系统中搭建搭建Docker环境,这次将利用上次搭建的Docker环境实现Java应用从开发到发布一步到位。
.>>> Windows(WLS2)Linux子系统搭建Docker环境(传送门)
1. 迁移Linux子系统(非必要)
在Windows启用WSL2功能后,默认情况下,在Microsoft store安装的Linux系统(Ubuntu)是在系统盘中(C盘),但是一般来说系统盘的容量是由限的,所以下载安装Linux子系统后的第一步就是迁移Linux子系统。
(如未作特殊说明,下面的命令在power shell运行)
首先查看已安装的Linux子系统,我的电脑只装了一个Ubuntu18.04,如下:
wsl -l --all -v
将Linux子系统导出到磁盘中(D盘)
wsl --export Ubuntu-18.04 d:\WSL\Ubuntu18.04.tar
注销当前Linux子系统(Ubuntu-18.04)
wsl --unregister Ubuntu-18.04
重新导入Linux子系统,指定导入位置为D盘的WSL目录,WSL版本为2
wsl --import Ubuntu-18.04 d:\WSL d:\WSL\Ubuntu18.04.tar --version 2
导入成功之后D盘的WSL目录下面将会出现一个ext4.vhdx文件,这个就是Linux子系统。
最后设置默认的登录用户名,这个命令好像只能在cmd命令行执行(不知道为什么)
Ubuntu1804 config --default-user itqn
2. 为WSL2设置固定IP
Windows的WSL有个坑,那就是每一次启动的时候IP地址都是随机生成的。
这对开发来说就很难受,所以要想使用WSL2作为开发环境的一部分首先要解决的问题就是为WSL设置一个固定IP。
这里可以创建一个bat脚本,每次开机的时候运行这个脚本即可(也可以设置开机自动设置),脚本获取方式在文章底部,需要注意的是,这个脚本一定要是Windows管理员身份运行。
这样WSL2的Linux子系统中和Windows系统就有了同一个网段的IP了,如下图:
设置固定IP之后,访问WSL只需要使用固定的192.168.50.110即可,不需要知道WSL随机生成的IP是什么。
3. IDEA安装Docker插件
IDEA安装Docker插件跟IDEA安装其他插件是一样的,在Setting->Plugins中搜索安装即可。
为了IDEA的Docker插件能连接到WSL的Docker,需要打开WSL的Docker 2375端口远程访问,编辑/etc/default/docker
修改如下配置:
# 开启远程访问 -H tcp://0.0.0.0:2375
# 开启本地套接字访问 -H unix:///var/run/docker.sock
DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
重启Docker进程:
$ sudo service docker restart
在IDEA配置Docker远程连接,Build->Docker,配置对应WSL的IP即可连接Docker,如下图:
连接Docker之后就可以查看和管理Docker镜像和容器, 如下图:
4. 开发Java应用
这一步跟平时开发Java应用没有任何差别, 这里以一个简单的Say Hi项目为例。
项目pom.xml:
org.springframework.boot
spring-boot-starter-parent
2.0.9.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-maven-plugin
Rest API接口:
@RestController
public class HiController {
@RequestMapping("/sayHi")
public String sayHi() {
return "Hi " + System.currentTimeMillis();
}
}
Dockerfile:
FROM java:openjdk-8-jdk-alpine
ADD target/*.jar app.jar
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone
EXPOSE 8888
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]
5. 一键发布部署
Java应用开发完成后, 只需要创建Docker构建即可一键发布应用, 构建配置如下:
注意: 这里设置前置任务来用maven编译项目(clean package)
运行构建即可自动创建容器并运行
访问Java应用
=========================================================
WSL设置固定IP的脚本可关注公众号 “HiIT青年” 发送 “WSLIP” 获取。
关注公众号,文章。
wsl Java开发_WSL2 + Docker + IDEA 开发到发布一步到位相关推荐
- 游戏开发 应用Docker实现开发环境
作者简介:陈霈霖,金山西山居资深Unity开发工程师,Unity开发框架KSFramework作者,关注Web开发全栈.DevOps最近,跟一个大学金融系的同学交流,发现他对科技发展的动态非常了解,然 ...
- 『高级篇』docker之开发课程EdgeService(16)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之开发课程EdgeService(16) 课程的edgeService依赖于课程服务的dubbo服务,对 ...
- 『高级篇』docker之开发用户服务EdgeService(13)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:『高级篇』docker之开发用户服务EdgeService(13) 上一节开发了用户服务,即将开发的是用户服务EdgeServ ...
- docker mysql开发环境_跟我一步一步用Docker搭建Beimi游戏服务端开发环境
跟我一步一步用Docker搭建Beimi游戏服务端开发环境 Stone 摘要 本文为java 0基础的小伙伴介绍如何用Docker搭建开发环境.如果不关心过程直接可 跳到本文最后取代码. 关键步骤为: ...
- 钉钉需要什么java知识_Java钉钉开发_01_开发前的准备
源码已上传GitHub:传送门 一.准备事项 1.1 一个能在公网上访问的项目: 1.2 一个钉钉账号 1.3 创建一个应用 登录钉钉后台->工作台->自建应用 二.钉钉的配置参数 2 ...
- Java新手看招 常用开发工具介绍
Java新手看招 常用开发工具介绍 Java的应用越来越广泛,学习Java的人也越来越多.学过程序设计的人知道,使用Basic进行程序设计,可以使用QBasic.Visual Basic等开发工具:使 ...
- java ug二次开发_使用Java进行UG二次开发:简单的例子(上) | 学步园
最近因为要进行TeamCenter二次开发(胖客户端定制),所有要开始研究Java了.因此突发奇想为什么不能使用Java进行二次开发呢?现在对UG进行的开发以C/C++应用为主.大多数使用的是原来的U ...
- java和python的web自动化有什么区别-Java Web开发和Python Web开发之间的区别
今天的文章讨论了Java Web开发和Python Web开发之间的区别.我不鼓励我们在这里从Java Web迁移到Python Web开发.我只是想谈谈我的感受.它不一定适合所有情况,仅供我们参考. ...
- 利用Docker构建开发环境
最近接触PAAS相关的知识,在研发过程中开始使用Docker搭建了自己完整的开发环境,感觉生活在PAAS时代的程序员真是幸福,本文会简要介绍下Docker是什么,如何利用Docker来搭建自己的开发环 ...
- Java程序员转Android开发必读经验
小编最近几日偷偷的发现部分Java程序员想转安卓开发,故此加紧补充知识,为大家搜集资料,积极整理前人的经验,希望可以给正处于困惑中的你,带来些许的帮助. 啰哩啰嗦的说说Java和Android程序的区 ...
最新文章
- Go语言调度器之调度main goroutine(14)
- 一个可供参考的Java高并发异步应用案例--转
- 配置isc-dhcrelay需要注意的事项
- 训练集样本不平衡问题对CNN的影响
- js能否打印服务器端文档,js打印远程服务器文件
- 【Java基础总结】网络编程
- IO多路复用(番外篇)、poll、epoll三者的区别
- python实现梳排序
- 全球及中国晶圆锯划片刀行业发展态势及投资潜力预测报告2021-2027年
- CMMI认证的周期是多久?费用是多少?
- MATLAB数据拟合(附代码)
- ppt保存为高分辨率图片(ppt2016)
- mysql CONCAT函数 用于隐藏银行卡号码
- 刚开始有点紧张,闪送第一单
- securecrt下传输大文件
- 傅里叶变换-平稳信号
- 【MFC】CSplitterWnd 重载限定窗口调整范围
- 需求分析阶段的各个步骤
- patchca实现验证码验证
- 单片机开发应用技术综合实验装置
热门文章
- 基于yolov3的水下目标检测(百度飞浆实现)
- FinClip 3 月产品小报:新功能上线小程序一键生成 App
- PowerVR SDK记录
- 通过rgb值判断颜色深浅
- coffeescript_在客户端上使用CoffeeScript
- 服务器3D场景建模(三):体素场景(一)
- 报错:TracerWarning: Output nr 1. of the traced function does not match the corresponding output of the
- matlab ga初始值,matlab之GA优化.pdf
- python大批量读写.doc文件的解决方案
- (Linux目录操作命令)零基础小白学习_入门到精通03 程序员阿沐