京豆薅羊毛新姿势-docker方式
背景
上周看脉脉的时候看到下面这个帖子,领导让搞项目容器化,但是楼主没搞过,对新东西有畏惧感,怂了,然后把机会白白送给其他同事了。
想来我也是差不多这样的,刚到阿里工作的时候,有个好的项目机会来了,领导让我做,我总觉得需要时间准备,等准备好了再上。然后等着等着,项目就给别人做了,别人就成长了,而我在畏首畏尾中止步不前。现在领导也是时不时拿这件事来调侃我。。。
所以嘛,咱的主要目的是学习成长,这周按脉脉帖子上的内容,学一下容器化,实际操作一把。

docker容器化
1.什么是docker
做Java开发的同学应该都知道Java代码要运行在服务器上,都是先打包为jar包,再通过java -jar xxx.jar命令运行,将jar文件在虚拟机上运行。虚拟机就是通过虚拟出一套硬件后,在上面运行一个完整的操作系统的,如阿里云ECS服务器。而docker容器不需要虚拟硬件,而是将容器内的进程直接运行在宿主机的内核,因此容器比传统虚拟机更为轻便。下图是传统虚拟化和Docker容器的对比:

2.docker创建镜像
安装docker步骤可自行搜索,安装完成后我们用京豆脚本的代码做示例
这一步将京豆脚本的jar包构建为镜像,项目目录下创建Dockerfile文件,文件内容如下,注释已经说明每一行的作用
#使用jdk8作为基础镜像
FROM openjdk:8
#指定作者
MAINTAINER dnboy
#暴漏容器的8080端口
EXPOSE 8080
#将复制指定的docker-demo-0.0.1-SNAPSHOT.jar为容器中的job.jar,相当于拷贝到容器中取了个别名
ADD ./target/application.jar /application.jar
#相当于在容器中用cmd命令执行jar包 指定外部配置文件
ENTRYPOINT ["java","-jar","/application.jar"]
然后命令行执行如下命令:
docker build -t jdou
这一步将jdk和jar包都构建为docker镜像,镜像名称为jdou
3.上传镜像
上一步的镜像可以在本地docker里运行,为了让镜像公开,所有人都可以使用,需要将镜像上传到docker hub上,具体步骤是
(1)给镜像打标签
命令行执行
# 修改tag,示例:docker tag ae4ed59c dnboy985/jdou:1.0
docker tag IMAGEID(镜像ID) 仓库:标签
# 给镜像打tag,示例:docker tag dnboy985/jdou:1.0 dnboy985/jdou:v1.0
docker tag <上一步的tag> <hub-user>/<repo-name>:<tag> # tag不指定默认为latest
(2)上传镜像
# 登录docker hub账号,无账号可先自行注册
docker login
# push tag,示例:docker push dnboy985/jdou:v1.0
docker push <hub-user>/<repo-name>:<tag>
上传完成后可在docker hub官网上查到镜像,如图是我刚上传完的镜像

所有代码已提交到Github上,有兴趣了解的同学可公众号内回复 京豆 查看源代码,下面是脚本的运行操作步骤
操作步骤
1.安装docker
Windows系统上安装docker步骤:Windows安装docker步骤
docker官网下载地址:Docker Windows下载
按照上面的教程先在电脑上安装好docker
2.拉取镜像
这一步是将京豆脚本镜像拉取到本地电脑,步骤:
- Window上打开命令行的方式是:按WIN + R 键,在运行窗口里输入
cmd回车之后弹出,Mac上直接打开终端就行 - 在命令行窗口输入
docker pull dnboy985/jdou:v1.0,大概等待10分钟左右就下载完成了
博主这里用的Mac,下载完成后,打开docker,在images选项里找到刚下载的镜像,名称为:dnboy985/jdou

3.运行镜像
在命令行窗口里运行镜像,需要先获取自己京东账号登录后的pt_pin和pt_key数据,获取方式见我之前的文章:[奶奶看了都会]教你用脚本薅京东签到羊毛
然后命令行里输入:(注意下面需要替换pt_pin和pt_key)
docker run -d -p 8080:8080 --env PT_PIN=替换为你的pt_pin --env PT_KEY=替换为你的pt_key --name jdou dnboy985/jdou:v1.0
执行之后可在docker的Containers页面查看是否有名称为jdou的容器在运行

4.测试效果
上一步执行完成后,电脑上已经有定时任务在跑了,为了测试京豆脚本是否生效,可以测试一下效果
具体步骤是:
- 浏览器上打开:
http://localhost:8080/doc.html#/default/jd-service/getJDUsingGET,如页面无法打开,可文章底部留言反馈 - 页面打开后,选到
调试页面,在参数值里分别测试输入1,2,3后,再点击发送按钮,查看是否有信息返回,如有则项目运行成功!!!

最后给一下完整代码获取方式:关注公众号卷福同学,公众号内回复京豆
京豆薅羊毛新姿势-docker方式的更多相关文章
- 【转+自己研究】新姿势之Docker Remote API未授权访问漏洞分析和利用
0x00 概述 最近提交了一些关于 docker remote api 未授权访问导致代码泄露.获取服务器root权限的漏洞,造成的影响都比较严重,比如 新姿势之获取果壳全站代码和多台机器root权限 ...
- 添加ssh服务构建新镜像-docker commit 方式01
添加ssh服务构建新镜像-docker commit 方式 1:docker commit构建自定义镜像---一般不推荐使用这种方式构建新镜像 1:ubuntu基础镜像下载 ubuntu@ubuntu ...
- FJNU 1159 Fat Brother’s new way(胖哥的新姿势)
FJNU 1159 Fat Brother’s new way(胖哥的新姿势) Time Limit: 1000MS Memory Limit: 257792K [Description] [题目 ...
- Broadcom BCM94352z/DW1560驱动新姿势
转自:https://blog.daliansky.net/Broadcom-BCM94352z-DW1560-drive-new-posture.html Broadcom WiFi/BlueToo ...
- Java计时新姿势
为获得更好的阅读体验,请访问原文:传送门 前言: 最近公司来了个大佬,从他那里学到不少东西,其中一个就是计时 的新姿势「StopWatch」,赶紧来一起了解了解吧! 一.最简单的计时 在我们的程序中不 ...
- Docker 方式部署 Solo 博客系统总结
此篇为Docker部署方式,另有Tomcat部署方式,请参考文章<Tomcat 方式部署 Solo 博客系统总结> 最近搭建了一个博客系统,作为自己的主页,方便记录一些平时所见所闻 ...
- NET Core 3.0 AutoFac替换内置DI的新姿势
原文:NET Core 3.0 AutoFac替换内置DI的新姿势 .NET Core 3.0 和 以往版本不同,替换AutoFac服务的方式有了一定的变化,在尝试着升级项目的时候出现了一些问题. 原 ...
- Python一键转Jar包,Java调用Python新姿势!
粉丝朋友们,不知道大家看故事看腻了没(要是没腻可一定留言告诉我^_^),今天这篇文章换换口味,正经的来写写技术文.言归正传,咱们开始吧! 本文结构: 需求背景 进击的Python Java和Pytho ...
- 【漏洞复现】PHPmyadmin 4.8.1后台Getshell新姿势
原文地址:https://mp.weixin.qq.com/s/HZcS2HdUtqz10jUEN57aog 早上看到群里在讨论一个新姿势,phpmyadmin后台getshell,不同于以往需要知道 ...
- 基于空镜像scratch创建一个新的Docker镜像
我们在使用Dockerfile构建docker镜像时,一种方式是使用官方预先配置好的容器镜像.优点是我们不用从头开始构建,节省了很多工作量,但付出的代价是需要下载很大的镜像包. 比如我机器上docke ...
随机推荐
- Dubbo 泛化调用在vivo统一配置系统的应用
作者:vivo 互联网服务器团队- Wang Fei.LinYupan Dubbo泛化调用特性可以在不依赖服务接口API包的场景中发起远程调用, 这种特性特别适合框架集成和网关类应用开发. 本文结合在 ...
- 活动回顾|阿里云 Serverless 技术实战与创新上海站回放&PPT下载
5月27日"阿里云 Serverless 技术实战与创新"上海站圆满落幕.活动现场邀请了来自阿里云 一线技术专家,分享当前 Serverless 趋势和落地实践过程中的挑战和机遇: ...
- Serverless 年终技术盘点 :工业、学术、社区遍地开花,国内厂商迅速卡位
作者 | 刘宇(花名:江昱) 2021 年,Serverless 架构在权威咨询机构 Forrester 所发布的 < The Forrester Wave: Function-As-A-S ...
- 基于 SpringBoot + Vue3.2 + Element Plus 的后台管理系统
简介 TANSCI 基于 SpringBoot + Vue3.2 + Element Plus 的后台管理系统. 包含基础模块:菜单管理.角色管理.组织管理.用户管理.字典管理.日志管理(操作日志.异 ...
- Redis在Liunx系统下使用
Redis使用 前言 如何在Linux服务器上部署Redis,版本号如下: Redis版本 5.0.4 服务器版本 Linux CentOS 7.6 64位 下载Redis 进入官网找到下载地址 ht ...
- [转帖]云数据库是杀猪盘么,去掉中间商赚差价,aws数据库性能提升 10 倍!价格便宜十倍。
https://tidb.net/blog/021059f1 于是乎dba中的冯大嘴喊出了云数据库就是杀猪盘.让每个公司自建数据库. 那么有没有一种数据库又便宜又好用呢.有 哪就是tidb数据库. 之 ...
- [转帖]TiDB + TiFlash : 朝着真 HTAP 平台演进
https://zhuanlan.zhihu.com/p/80495479 作者介绍:韦万,PingCAP 数据库研发工程师,主要领域是数据库的存储引擎研发,以及系统性能优化. 一.为什么我们需要 H ...
- [转帖]Megacli常用命令汇总
MegaCli 是一款管理维护硬件 RAID 软件,可以通过它来了解当前 raid 卡的所有信息,包括 raid 卡的型号,raid 的阵列类型,raid 上各磁盘状态,等 .通常,我们对硬盘当前的状 ...
- 【转帖】磁盘IOPS的计算
计算磁盘IOPS的三个因素: 1.RAID类型的读写比 不同RAID类型的IOPS计算公式: RAID类型 公式 RAID5.RAID3 Drive IOPS=Read IOPS + 4*Write ...
- [转帖]一次操作系统报错OutOfMemory Error的处理记录
在启动公司内嵌的tomcat容器时出现报错, 如下: # There is insufficient memory for the Java Runtime Environment to contin ...