社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

IDEA 使用 Docker 插件,实现一键自动化部署

Android编程精选 • 1 年前 • 170 次点击  
👇👇关注后回复 “进群” ,拉你进程序员交流群👇👇


一、 docker开启远程连接访问

首先我们要开启docker的远程连接访问。保证不是docker所在的服务器,也能够远程访问docker。

Linux版的docker:

  1. 修改 docker.service 文件,添加监听端口 -H tcp://0.0.0.0:2375

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

找到 ExecStart,在最后面添加 -H tcp://0.0.0.0:2375,如下图所示

  1. 重启docker

systemctl daemon-reload
systemctl start docker
  1. 如果我们有防火前记得添加防火墙策略或者关闭防火墙。

window版docker

在电脑左下角找到docker图标,鼠标右键选择settings。将General菜单下的Expose daemon on tcp://localhost:2375 without TLS勾选。无需重启。

安装配置idea的docker插件

  1. 在File --> Settings --> Plugins 在输入框中搜索Docker,选择并安装。安装完成后重启Docker。

  1. 配置docker

在File–> Settings–>Build,Execution,Deployment中找到Docker

新建一个docker实例,然后在Engine API URL中将docker所在ip端口号填上,填完如果下面显示Connection successful证明连接docker成功。如果失败,可能是我们上一步docker开启远程连接未成功。

我们设置完成后,回到idea主界面,可以看到页面下面有一个docker窗口。点击绿色箭头,连接docker。连接上后显示Containers和Images就是我们现在docker中已经有的容器和镜像。

创建项目,并配置

一 、 创建项目

我就以一个简单的Eureka项目演示。

File–> New -->Project --> Spring Initializr

二、 配置项目

1. 修改pom.xml文件,引入docker-maven-plugin插件相关配置. 改配置在标签内


    <plugin>
        <groupId>com.spotifygroupId>
        <artifactId>docker-maven-pluginartifactId>
        <version>1.0.0 version>

        
        <executions>
            <execution>
                <id>build-imageid>
                
                <phase>packagephase>
                <goals>
                    <goal>buildgoal>
                goals>
            execution>
        executions>

        <configuration>
            
            <imageName>${project.artifactId}imageName>
            
            <imageTags>
                <imageTag>latestimageTag>
            imageTags>
            
            <dockerDirectory> ${project.basedir}/src/main/resourcesdockerDirectory>

            
            <dockerHost>http://127.0.0.1:2375dockerHost>

            
            <resources>
                <resource>
                    <targetPath>/targetPath>
                    
                    <directory>${project.build.directory}directory>
                    
                    <include>${project.build.finalName}.jarinclude>
                resource>
            resources>
        configuration>
    plugin>
2. 配置项目的基本配置。( 这里不是重点,一笔带过)

① 修改application.properties,添加项目相关信息。

#项目启动的端口号和IP地址
server.port=9090
eureka.instance.hostname=127.0.0.1

#
 是否将其注册到注册中心, 如果不是集群环境,false
eureka.client.register-with-eureka=false
# 是否检索服务,单机情况下为false
eureka.client.fetch-registry=false

eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/

② 找到项目启动类,添加@EnableEurekaServer注解

@EnableEurekaServer@SpringBootApplicationpublic class EurekaserverApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaserverApplication.class, args);
    }}
  1. 添加Dockerfile文件。

我们在EeurekaServer\src\main\resources目录下,添加文件名为Dockerfile的文件。

如果我们docker中没有java:8 这个镜像,请先使用docker pull java:8,将镜像先拉下来。

FROM java:8
VOLUME /tmp
ADD *.jar app.jar
EXPOSE 9090
ENTRYPOINT [ "java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar" ]

我们添加了一个VOLUME指向“/ tmp”的内容,因为这是Spring Boot应用程序默认为Tomcat创建工作目录的地方。效果是在“/var/lib/docker”下的主机上创建一个临时文件,并将其链接到“/ tmp”下的容器。对于我们在此处编写的简单应用程序,此步骤是可选的,但如果需要在文件系统中实际编写,则对于其他Spring Boot应用程序可能是必需的。

为了减少Tomcat的启动时间,我们添加了一个指向“/dev/urandom”的系统属性作为熵源。如果您使用Tomcat(或任何其他Web服务器)的“标准”版本,则不需要更新版本的Spring Boot。

maven打包,生成镜像

使用maven打包。我们在pom.xml中配置过,如果我们是用maven的package,那么就会自动使用Dockerfile文件进行构建。

我们从控制台可以看到,已经给我构建了一个和我们项目名相同的镜像文件。

我们在docker窗口可以看到,我们的镜像库中多个一个eurekaserver:latest镜像。

创建容器,项目部署到docker

我们在docker窗口中,找到我们刚才创建的镜像文件,鼠标右键,选择Create container,我们修改创建容器所需要的配置。

在Create Docker Configuration弹窗中修改Container name(容器名称) Bind ports(Ip和端口映射)

我在这里添加127.0.0.1:8080:9090. 使用本地8080端口,去访问容器的9090.

我们点击Run之后,就会自动创建容器并启动。

我们可以看到在docker插件中,多出了一个eurekaServer的容器,并且启动成功,端口号为9090.

访问容器中的项目

我们在前面设置的是使用8080端口,访问容器9090的项目。

我们使用127.0.0.1:8080访问项目,出现如下页面,证明项目启动成功。

在这里我们基本上已经完成了所有的配置。

修改项目,一键部署

以后,我们启动项目可以按照下图所示,一键启动我们项目就会在docker容器中运行。

如果我们修改了项目,在使用在docker插件中启动项目,会发现在启动依然还是修改前的项目,因为我们只是启动了容器,并没有将修改后的项目重新打包并生成docker的images。如果我们想在启动时直接用运行打包并启动项目可以按照下面的操作。

  1. 我们修改在前面我们创建的Docker Images 的配置。

2.在配置启动项中找到Before launch:Activate tool window,在这里我们新增一个Run Maven Gold。

  1. 我们在这里的Command line 中添加一个命令 package。

配置完成后保存。以后我们启动项目时都会执行maven的package命令,自动将我们打包并把项目生成docker镜像文件启动。

以后,如果我们修改项目后,都可以使用下图所示去启动。它会自动打包创建docker镜像并启动项目。

如果我们只需要启动项目,到docker插件窗口,启动对应项目的容器就可以了。环境:jdk1.8及以上。、Maven 3.2+

参考 https://www.cnblogs.com/hsz-csy/p/9488469.html

https://spring.io/guides/gs/spring-boot-docker/

原文:https://blog.csdn.net/qq_35976271/article/details/100287663

-End-

最近有一些小伙伴,让我帮忙找一些 面试题 资料,于是我翻遍了收藏的 5T 资料后,汇总整理出来,可以说是程序员面试必备!所有资料都整理到网盘了,欢迎下载!


点击👆卡片,关注后回复【面试题】即可获取

在看点这里好文分享给更多人↓↓

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/152495
 
170 次点击