Idea集成Docker

1、前言

上一节中,我们介绍了Dockerfile的方式构建自己的镜像。但是在实际开发过程中,一般都会和开发工具直接集成,如Idea。今天就介绍下idea和Docker如何集成。

2、开启docker远程

要集成之前,需要我们本机能够访问docker服务,也就是我们的docker服务需要开启远程模式。

2.1、配置远程访问模式

vi /usr/lib/systemd/system/docker.service

添加-H tcp://0.0.0.0:2375即可。

  • -H:即添加host。
  • tcp:表示tcp协议连接。
  • 0.0.0.0: 表示不限制远程访问ip。
  • 2375:表示远程访问端口。
    添加后如下图所示:
    在这里插入图片描述

2.2、重启docker服务

注意,如果防火墙有设置端口,这里需要开放2375端口。

systemctl daemon-reload 
systemctl restart docker 

2.3、验证

重启服务后,可以直接浏览器访问http://ip:2375/version。如果能够成功访问到信息,则说明远程配置成功。
在这里插入图片描述

3、Idea配置Docker

打开idea的设置,File -> Settings -> Build, Execution, Deployment -> Docker
在Connect to Docker daemon with:选择TCP socket。并在Engine API URL输入tcp://ip:2375,ip即我们虚拟机中ip。
输入后,下方显示Connection successful,即说明连接成功。
在这里插入图片描述

3.1、配置证书登录

上面介绍的方式是直接开放tcp端口登录,但是这样回存在安全问题。实际项目中,我们一般还要加上证书的认证。

  1. 先配置docker.service
vi /usr/lib/systemd/system/docker.service

ExecStart后面追加配置,/etc/docker/certs为生成证书的路径,2375为docker开启的远程端口:

--tlsverify --tlscacert=/etc/docker/certs/ca.pem --tlscert=/etc/docker/certs/server-cert.pem --tlskey=/etc/docker/certs/server-key.pem -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
  1. 接着生成认证证书。
    生成证书脚本create_cert.sh,全局替换下公网IP,证书密码:
cker TLS 证书
#!/bin/bash#相关配置信息
SERVER="${公网IP}"
PASSWORD="${证书密码}"
COUNTRY="CN"
STATE="qqq"
CITY="xxx"
ORGANIZATION="sssss"
ORGANIZATIONAL_UNIT="product"
EMAIL="sasdasd"###开始生成文件###
echo "开始生成文件"mkdir -pv /etc/docker/certs#切换到生产密钥的目录
cd /etc/docker/certs 
#生成ca私钥(使用aes256加密)
openssl genrsa -aes256 -passout pass:$PASSWORD  -out ca-key.pem 4096
#生成ca证书,填写配置信息
openssl req -new -x509 -passin "pass:$PASSWORD" -days 3650 -key ca-key.pem -sha256 -out ca.pem -subj "/C=$COUNTRY/ST=$STATE/L=$CITY/O=$ORGANIZATION/OU=$ORGANIZATIONAL_UNIT/CN=$SERVER/emailAddress=$EMAIL"#生成server证书私钥文件
openssl genrsa -out server-key.pem 4096
#生成server证书请求文件
openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csrsh -c 'echo subjectAltName = IP:0.0.0.0,IP:${公网IP},IP:127.0.0.1 >> extfile.cnf'
sh -c 'echo extendedKeyUsage = serverAuth >> extfile.cnf'#使用CA证书及CA密钥以及上面的server证书请求文件进行签发,生成server自签证书
openssl x509 -req -days 3650 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial  -out server-cert.pem -extfile extfile.cnf#生成client证书RSA私钥文件
openssl genrsa -out key.pem 4096
#生成client证书请求文件
openssl req -subj '/CN=${公网IP}' -new -key key.pem -out client.csrsh -c 'echo "extendedKeyUsage=clientAuth" > extfile-client.cnf'
#生成client自签证书(根据上面的client私钥文件、client证书请求文件生成)
openssl x509 -req -days 3650 -in client.csr -CA ca.pem -CAkey ca-key.pem  -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem  -extfile extfile-client.cnf#更改密钥权限
chmod 0400 ca-key.pem key.pem server-key.pem
#更改密钥权限
chmod 0444 ca.pem server-cert.pem cert.pem
#删除无用文件
rm client.csr server.csrecho "生成文件完成"
###生成结束###

直接执行该脚本:

sh create_cert.sh

执行成功后,在/etc/docker/certs可以看到我们生成的证书。

  1. 重启docker。
 systemctl daemon-reloadsystemctl restart docker
  1. 将certs整个复制到本地。打开Idea的Docker设置,Certificates folder选择我们存放的cert目录即可。
    在这里插入图片描述
    可以看到显示Cnnection successful,表示连接成功。

4、创建Dockerfile

我们继续使用上一篇的dockerfile-springboot工程,在该工程下添加Dockerfile文件。
在这里插入图片描述
我们需要使用Dockerfile构建我们的镜像到我们的Docker服务上,并运行该程序,最终访问接口打印“success!”。

4.1、编写Dockerfile

# 指定基础镜像作为该容器的基础环境,如springboot应用最起码得有jdk环境
FROM openjdk:17# 执行维护者的信息
MAINTAINER xx# 设定时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone# 创建一个存放该工程的目录,将项目target目录下的jar文件复制到容器中的目录下
RUN mkdir -p /mydata/project
COPY target/springboot_08_ssmp-0.0.1-SNAPSHOT.jar /mydata/project/springboot_08_ssmp.jar# 执行启动
ENTRYPOINT ["java", "-jar", "/mydata/project/springboot_08_ssmp.jar"]

4.2、配置启动项

选择Dockerfile的方式。

  • 1:选择我们的Dockerfile文件,
  • 2:填写我们的镜像名称,
  • 3:我们容器的名称,
  • 4:填写我们的端口映射,前面的是暴露宿主机端口,后面的是容器端口。
    在这里插入图片描述
    配置完后,直接运行,观察控制台输出日志信息。
    在这里插入图片描述
    在这里插入图片描述
    同时,控制台的左侧已经有了我们刚构建的镜像和容器:
    在这里插入图片描述
    此时,容器已经启动!

4.3、访问接口

由于我们映射出来的端口为8899,所以我们访问http://ip:8899/books/test。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/103667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于LoRa的远程气象站:实现远程气象监测与数据传输

随着物联网技术的不断发展,基于无线通信的远程气象监测系统得以广泛应用。本文将介绍一种基于LoRa技术的远程气象站,通过LoRa模块实现气象数据的远程采集和传输,为气象监测提供了一种高效、低功耗的解决方案。 LoRa技术概述 LoRa&#xff08…

ssm+vue的课程网络学习平台管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。

演示视频: ssmvue的课程网络学习平台管理系统(有报告)。Javaee项目,ssm vue前后端分离项目。 项目介绍: 采用M(model)V(view)C(controller)三层体…

《从程序员到架构师》:从现在开始培养架构思维,一点都不晚

《从程序员到架构师》:从现在开始培养架构思维,一点都不晚 尽管大家都明白软件架构非常重要,但是能够真正理解并应用软件架构的核心思维去解决实战的商业项目,确实大多数程序员所欠缺的。本文将从一个全新的视角,重新带…

【算法练习Day19】二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 二叉搜索树的最近公共祖先叉…

Avalonia常用小控件Svg

1.项目下载地址:https://gitee.com/confusedkitten/avalonia-demo 2.UI库Semi.Avalonia,项目地址 https://github.com/irihitech/Semi.Avalonia 3.SVG库,Avalonia.Svg.Skia,项目地址 https://github.com/wieslawsoltes/Svg.Ski…

【数据库——MySQL(实战项目1)】(4)图书借阅系统——触发器

目录 1. 简述2. 功能代码2.1 创建两个触发器,分别在借出或归还图书时,修改借阅人表中的已借数目(附加:借阅人表的总借书数、图书表的借阅次数以及更新图书表的图书状态为(已借出/在架上))字段;2.2 创建触发器,当借阅者…

redis 哨兵 sentinel(一)配置

sentinel巡查监控后台master主机是否故障,如果故障根据投票数自动将某一个从库转换为新主库,继续对外服务 sentinel 哨兵的功能 监控 监控主从redis库运行是否正常消息通知 哨兵可以将故障转移的结果发送给客户端故障转移 如果master异常,则…

IOS17 轻松签全能签还能不能用?多开能否使用?升级后微信底栏消失怎么办?BY:后厂村路灯

从iphone15还没出就有小伙伴们追着问, 到现在也有人一直再问iOS17能不能用,看来换手机的人很多呀。 这里统一回答一下:“iOS17苹果签名可以用,多开也可以用”但是还是有些地方注意。 如果你是16系统直接升级刀17就可以&#xff…

使用 Splashtop 驾驭未来媒体和娱乐

在当今时代,数字转型不再是可选项,而是必选项。如今,媒体与娱乐业处于关键时刻,正在错综复杂的创意、技术和远程协作迷宫之中摸索前进。过去几年发生的全球事件影响了我们的日常生活,不可逆转地改变了行业的运作方式&a…

给你一个项目,你将如何开展性能测试工作?

一、性能三连问 1、何时进行性能测试? 性能测试的工作是基于系统功能已经完备或者已经趋于完备之上的,在功能还不够完备的情况下没有多大的意义。因为后期功能完善上会对系统的性能有影响,过早进入性能测试会出现测试结果不准确、浪费测试资…

【C++STL基础入门】list基本使用

文章目录 前言一、list简介1.1 list是什么1.2 list的头文件 二、list2.1 定义对象2.2 list构造函数2.3 list的属性函数 总结 前言 STL(Standard Template Library)是C标准库的一个重要组成部分,提供了一套丰富的数据结构和算法,可…

【Lombok的Bug记录】前端传的有值,但是到后端就全为空了

项目场景: 项目背景:使用Data注解标注类 问题描述 前端传的有值,但是到后端就全为空了 原因分析: AName和aName生成的set方法名是一样的,所以换名字就行了! 解决方案: 属性不要写成xXxx的形式…

【伪彩色图像处理】将灰度图像转换为彩色图像研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

YB4014是可以对单节磷酸铁锂电池进行恒流/恒压充电管理的集成电路。

概述: YB4014是可以对单节磷酸铁锂电池进行恒流/恒 压充电管理的集成电路。该器件内部包括功率晶 体管,不需要外部的电流检测电阻和阻流二极管 YB4014只需要极少的外围元器件,非常适合于 便携式应用的领域。热调制电路可以在器件的功 耗比较大…

flutter开发入门,windows环境安装,耗时一天解决各种bug,终于成功

首先说明要安装的环境:java8必须,android studio,chrome是开发安卓和web是必须的 java8的下载地址:https://www.java.com/en/download/、 java8蓝奏云下载地址:jre-8u381-windows-x64.exe - 蓝奏云 flutter国内环境…

Spring Boot 中的 Redis 数据操作配置和使用

Spring Boot 中的 Redis 数据操作配置和使用 Redis(Remote Dictionary Server)是一种高性能的开源内存数据库,用于缓存、消息队列、会话管理和数据存储。在Spring Boot应用程序中,Redis被广泛用于各种用例,包括缓存、…

下载安装Ipa Guard

下载安装Ipa Guard 可以前往ipaguard工具官网下载,工具是免费下载,免费体验使用的。下载地址是https://www.ipaguard.com。 下载后解压工具便ok了,工具是绿色软件,无需其他安装流程。双击Ipa Guard.exe 启动ipaguard。 ipaguard…

Java语法基础案例(二)

目录 案例六:抢红包 案例七:找素数 方法一: 方法二: 方法三: 案例八:实现双色球 关于本项目所用所有方法的解释: 案例六:抢红包 一个大V直播时发起了抢红包活动,分…

2023年中国固废处理行业研究报告

第一章 行业概况 1.1 定义 固体废物处理是一个日益重要的领域,随着中国城市化进程的加速和工业产值的持续增长,固体废物的产生量也在不断上升。根据《固体废物污染环境防治法》的定义,固体废物包括了人类在生产、生活和其他活动中产生的固态…

AI低代码维格云甘特视图怎么用?

甘特视图,以日期为横轴展示任务持续时长和先后顺序,简称甘特图。 项目管理过程中,合理分配任务和资源至关重要,使用甘特图,妥当解决以下场景: 想知道整个项目的周期多长,哪些任务对项目的周期影响最大; 想知道每个任务的时间有多长,任务的优先级和依赖关系是什么; 想…