一、前提准备:

        (1)Linux 虚拟机上:在Docker基础上,安装docker-compose

        (2)docker文件配置:docker.service文件(所在目录 : /usr/lib/systemd/system)

               (2.1)修改内容如下:Docker是默认拒绝连接的,需开放连接docker端口

                           ExecStart=... -H tcp://0.0.0.0:2375

               (2.2)重新加载并重启Docker:systemctl daemon-reload、systemctl restart docker

        (3)服务器防火墙设置:

                 如图:

                 查看防火墙状态:systemctl status firewalld

                 

                 关闭防火墙状态:systemctl stop firewalld

                 

                 开启防火墙命令:systemctl start firewalld

                 或 添加端口到防火墙中

                 查看端口是否开放:firewall-cmd --query-port=2375/tcp

                 添加端口到防火墙:firewall-cmd --zone=public --add-port=2375/tcp --permanent

               (注:--zone为作用域,--add-port为开放端口,--permanent为永久开放,

                         添加完重启一下虚拟机)

        (4)docker-compose.yml文件配置多服务启动参数

                 编辑内容参考如下:

      #定义版本(compose版本有:1,2,3)
      version: '版本'
​
      #定义服务
      services:
        service-1:
          image: 镜像名:版本
          ports:
            - 映射端口:服务1端口
          networks:
            - 所属工作网络名
        service-2:
          image: 镜像名:版本
          ports:
            - 映射端口:服务2端口
          networks:
            - 所属工作网络名
        server-n:
          image: 镜像名:版本
          ports:
            - 映射端口:服务n端口
          networks:
            - 所属工作网络名
​
      #定义全局网络名
      networks:
          #无此网络名可以创建一个,命令docker network ls/create 网络名(查看/创建)
          #注:创建网络时,Linux防火墙关闭时是无法创建的,需要开启防火墙时才可创建
          自定义工作网络名:
            #默认使用bridge
            external: true

        (5)docker私有仓库配置:(可选)

               (5.1)拉取镜像命令:docker pull registry

               (5.2)启动镜像命令:

                      docker run -d -p 5000:5000 -v /etc/docker/registry:/var/lib/registry

                      --restart always --name registry registry:latest

               (5.3)文件配置:daemon.json文件

                         (所在目录:/etc/docker,没有就创建,有些版本需配置)

                         (5.3.1)编辑内容如下:ip:port为私有仓库地址

                      {
                        "insecure-registries":["ip:5000"]
                      }

                         (5.3.2)添加端口到防火墙:

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

                                      (注:添加完重启一下Linux虚拟机)

                         (5.3.3)重新加载并重启Docker服务:

                                        systemctl daemon-reload、systemctl restart docker

二、IDEA集成Docker

        (1)项目父工程pom.xml引入管理Docker插件并配置上传Docker信息,需要打包子模块引入

                 Docker插件

    <!--引入插件-->
    <build>
        <!--父工程打包名-->
        <finalName></finalName>
        <!--插件管理-->
        <pluginManagement>
            <plugins>
                <!--打包插件-->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <!---->
                    <executions>
                        <execution>
                            <goals>
                                <!--可以把依赖的包都打包到生成的Jar包中-->
                                <goal>repackage</goal>
                            </goals>
                        </execution>
                    </executions>
                    <!---->
                    <configuration>
                        <fork>true</fork>
                    </configuration>
                </plugin>
​
                <!-- 跳过单元测试 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-surefire-plugin</artifactId>
                    <configuration>
                        <skipTests>true</skipTests>
                    </configuration>
                </plugin>
​
                <!--使用docker-maven-plugin插件-->
                <plugin>
                    <groupId>com.spotify</groupId>
                    <artifactId>docker-maven-plugin</artifactId>
                    <version>1.0.0</version>
​
                    <!--
                      将插件绑定在某个phase执行
                     (只上传有引用打包插件的模块,即有主启动类的模块)
                    -->
                    <executions>
                        <execution>
                            <id>build-image</id>
                            <!--
                               用户只需执行mvn package ,
                               就会自动执行mvn docker:build
                            -->
                            <phase>package</phase>
                            <goals>
                                <goal>build</goal>
                            </goals>
                        </execution>
                    </executions>
​
                    <!--项目上传docker配置-->
                    <configuration>
                        <!--jdk版本1.8-->
                        <baseImage>java:8</baseImage>
​
                        <!--项目镜像名(注:ip:port为私有仓库地址,可选)-->
                        <imageName>
                            ip:port/${project.artifactId}:${project.version}
                        </imageName>
​
                        <!--项目版本-->
                        <imageTags>
                            <imageTag>${project.version}</imageTag>
                        </imageTags>
​
                        <!--容器启动命令(多环境)-->
                        <entryPoint>
                            [
                             "java", "-Djava.security.egd=file:/dev/./urandom", 
                             "-jar",
                             "-Duser.timezone=GMT+08",               
                             "/${project.build.finalName}.jar"
                            ]
                        </entryPoint>
​
                        <!--是否推送到docker私有仓库(可选)-->
                        <pushImage>true</pushImage>
                        <registryUrl>ip:port</registryUrl>
​
                        <!--生成镜像-->
                        <resources>
                            <resource>
                                <targetPath>/</targetPath>
                                <!--项目中target目录-->
                                <directory>${project.build.directory}</directory>
                                <!--此目录打包的jar包-->
                                <include>${project.build.finalName}.jar</include>
                            </resource>
                        </resources>
​
                        <!--docker主机地址-->
                        <dockerHost>http://ip:2375</dockerHost>
                    </configuration>
                </plugin>
            </plugins>
        </pluginManagement>
    </build>

        (2)IDEA设置Docker连接配置

                 如图:File --> Settings --> Build, Execution, Deployment --> Docker

        (3)IDEA操作Docker管理工具

                 如图:IDEA中View --> Services --> Add Configuration Type -->Docker   

                 

        (4)使用Maven中命令打包上传docker

                 如图:在父工程(root)Maven的Lifecycle中命令先clean,再package,

                           出现Building image 即为在构建项目镜像

                 

                 或 IDEA控制台输入mvn clean package命令

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐