Idea 使用docker插件,实现一键自动化部署

690 阅读2分钟

-----------------docker仓库----------------- 

#下载Registry的Docker镜像 

docker pull registry:2 

#启动Registry镜像 

docker run -p 5000:5000 --name registry2 --restart=always -e REGISTRY_STORAGE_DELETE_ENABLED="true" -d registry:2

-----------------docker ui----------------- 

#下载docker-registry-ui的Docker镜像 

docker pull joxit/docker-registry-ui:static 

#启动docker-registry-ui镜像 

docker run -p 8280:80 --name registry-ui --link registry2:registry2 -e REGISTRY_URL="http://registry2:5000" -e DELETE_IMAGES="true" -e REGISTRY_TITLE="Registry2" -d joxit/docker-registry-ui:static 

这些启动完毕之后需要开通防火墙端口

linux:

# 开启8280端口 

firewall-cmd --zone=public --add-port=8280/tcp --permanent 

firewall-cmd --zone=public --add-port=5000/tcp --permanent 

 # 重启防火墙才能生效 

systemctl restart firewalld 

# 查看已经开放的端口 

firewall-cmd --list-ports

win10开通端口:

看这篇juejin.cn/post/688997…

docker开启远程连接访问

linux版dacker:

1、编辑docker.service文件

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

进入编辑模式

2、修改的内容如下,修改完毕保存

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix://var/run/docker.sock \

3、使修改的docker文件生效

systemctl daemon-reload

4、重启docker

systemctl restart docker

window版docker:

步骤一:在电脑左下角找到docker图标,单击图标

鼠标右键选择settings。 将General菜单下的Expose daemon on tcp://localhost:2375 without TLS勾选。

步骤三:创建springboot项目,这段省略

步骤四:项目创建完成之后会有pom文件,在pom文件添加如下代码

<build>    
    <plugins>        
        <plugin>            
            <groupId>org.springframework.boot</groupId>            
            <artifactId>spring-boot-maven-plugin</artifactId>        
        </plugin>        
        <!--添加配置跳过测试-->        
        <plugin>            
            <groupId>org.apache.maven.plugins</groupId>            
            <artifactId>maven-surefire-plugin</artifactId>            
            <version>2.22.1</version>            
            <configuration>                
                <skipTests>true</skipTests>            
            </configuration>        
        </plugin>        
        <!--添加配置跳过测试-->        
        <plugin>            
            <groupId>io.fabric8</groupId>            
            <artifactId>docker-maven-plugin</artifactId>            
            <version>0.33.0</version>            
            <executions>                
                <!--如果想在项目打包时构建镜像添加-->                
                <execution>                    
                    <id>build-image</id>                    
                    <phase>package</phase>                    
                    <goals>                        
                        <goal>build</goal>                    
                    </goals>                
                </execution>            
            </executions>            
            <configuration>                
                <!-- Docker 远程管理地址   这里我用windows本地的docker 所以ip用的localhost-->                
                <dockerHost>http://localhost:2375</dockerHost>                
                <!-- Docker 推送镜像仓库地址    -->                
                <pushRegistry>http://localhost:5000</pushRegistry>                
                <images>                    
                    <image>                        
                        <!--由于推送到私有镜像仓库,镜像名需要添加仓库地址-->                        
                        <name>localhost:5000/template${project.name}:${project.version}</name>
                        <!--定义镜像构建行为-->                        
                        <build>                            
                            <!--定义基础镜像-->                            
                            <from>java:8</from>                            
                            <args>                                
                                <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>                            
                            </args>                            
                            <!--定义哪些文件拷贝到容器中-->                            
                            <assembly>                                
                                <!--定义拷贝到容器的目录-->
                                <targetDir>/</targetDir>                                
                                <!--只拷贝生成的jar包-->                                
                                <descriptorRef>artifact</descriptorRef>                            
                            </assembly>                            
                            <!--定义容器启动命令-->                            
                            <entryPoint>["java", "-jar","/${project.build.finalName}.jar"]</entryPoint>
                            <!--定义维护者-->                            
                            <maintainer>jiang</maintainer>                        
                        </build>                    
                    </image>                
                </images>            
            </configuration>        
        </plugin>    
    </plugins>
</build>

步骤五:操作idea的maven窗口如图所示:

步骤六:打包,镜像构建、推送镜像

打包指令:mvn clean package

镜像构建:mvn package docker:build

推送镜像文件:mvn docker:push

执行完成就可以在docker中查询到打包的镜像文件

需要注意地方:我的项目是用maven管理子项目的,父工程下面会有很多的子工程,执行指令的时候需要选择打包的项目,如图所示

步骤七:启动打包的镜像文件即可

<!--定义容器启动行为-->
<run>    
    <!--设置容器名,可采用通配符-->    
    <containerNamePattern>${project.artifactId}</containerNamePattern>    
    <!--设置端口映射-->    
    <ports>        
        <port>8080:8080</port>    
    </ports>    
    <!--设置容器间连接-->    
    <links>        
        <link>mysql:db</link>    
    </links>    
    <!--设置容器和宿主机目录挂载-->    
    <volumes>        
        <bind>            
            <volume>/etc/localtime:/etc/localtime</volume>            
            <volume>/mydata/app/${project.artifactId}/logs:/var/logs</volume>        
        </bind>    
    </volumes>
</run>

启动指令:mvn docker:start

步骤六和步骤七,项目打包,镜像构建,镜像推送,运行指令:

mvn clean package docker:build docker:push docker:start