超详细Docker容器化自动部署(纯手打)

微服务容器化自动部署

1. 传统手动部署:

首先基于源码打包生成jar包(或war包),将jar包(或war包)上传至虚 拟机并拷贝至JDK容器。

2. 通过Maven插件自动部署:

对于数量众多的微服务,手动部署无疑是非常麻烦的做法,并且容易出错。所以我们这 里学习如何自动部署,这也是企业实际开发中经常使用的方法。

以下采用 Maven插件自动部署

1.配置Maven环境变量

1.1.因为后面要在cmd命令行窗口使用 mvn 指令,所以要在本地配置Maven环境变量(配置Maven环境变量不做赘述,如已配置请忽略)

1.2. cmd命令窗口测试(后面也会在IDEA上操作,所以需要重启计算机才可以使用)

2.修改Docker配置

2.1. 进入此目录,修改宿主机的docker配置,让其docker服务可以远程访问, 暴露的docker服务端口号 2375

vim /lib/systemd/system/docker.service

注意:如果缺少yum命令,就用此命令行来安装 yum -y install vim*

2.2.在 ExecStart=后添加加配置

-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

0.0.0.0 代表所有 ip ,也可指定 ip。修改后如下:

注意:此处可能会由于Docker版本有差异,所以文件内容不一致,例如,1.13.1版本:

位置不同,效果一样!

2.3.配置好之后,刷新配置,重启服务

systemctl daemon-reload systemctl restart docker

2.4.验证是否生效,访问:http://192.168.1.100:2375/version , 响应如下内容则成功:

如果访问不到,则查看防火墙是否关闭。

2.5.或者通过命令行查看2375端口是否被监听

ps -ef | grep docker

3.自动部署前提配置

3.1.在 Maven 的安装目录下的 settings.xml 文件中添加阿里帐号和镜像固定密码 (密码设置如上图)

<server> 
    <!--maven的pom中可以根据这个id找到这个server节点的配置--> 
    <id>docker-aliyun</id> 
    <!--这里是在阿里云注册的账号--> 
    <username>阿里云账号</username> 
    <!--这里是在阿里云注册的镜像固定密码--> 
    <password>镜像固定密码</password> 
</server>

 

3.2.在settings.xml文件中继续添加如下代码:

<pluginGroup>com.spotify</pluginGroup>

如果不添加可能会报错:=> 这个插件不在白名单里面

[ERROR] No plugin found for prefix 'docker' in the current project and in the plugin groups [org.apache.maven.plugins, org.codehaus.mojo]

3.3. 在需要自动部署的工程的pom.xml 增加插件配置,这里以microservice-cloud-11-config-server-5001为例子

<build>
    <!-- 代表当前工程名,生成的jar包名就是app.jar -->
    <finalName>app</finalName>
    <plugins>
        <!-- 此插件是SpringBoot的插件,被下面的插件所依赖,一定要在其他构建插件之上,否则打包文件会有问题。 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
        <!-- docker的maven插件,官网:
              https://github.com/spotify/docker-maven-plugin -->
        <plugin>
            <groupId>com.spotify</groupId>
            <artifactId>docker-maven-plugin</artifactId>
            <version>1.0.0</version>
            <!--生成镜像相关配置-->
            <configuration>
                <!-- 将forceTags设为true,这样就会覆盖构建相同标签的镜像  -->
                <forceTags>true</forceTags>
                <!-- 远程 docker 宿主机地址, 端口号是/lib/systemd/system/docker.service所暴露的端口号, 生成镜像到docker中 -->
                <dockerHost>http://192.168.1.100:2375</dockerHost>
                <!--内容是之前修改的maven的settings.xml配置文件中,server节点的id-->
                <serverId>docker-aliyun</serverId>
                <!-- 镜像名:阿里云镜像仓库地址
                            ${project.artifactId}引用当前模块名作为仓库地址,
                            ${project.version}引用当前模块版本号作为镜像版本号
                            registry.cn-hangzhou.aliyuncs.com/cloud_model命名空间/demo:0.0.1-SNAPSHOT -->
                <imageName>registry.cn-hangzhou.aliyuncs.com/cloud_model/${project.artifactId}:${project.version}</imageName>
                <!--基础镜像-->
                <!--<baseImage>jdk1.8</baseImage>-->
                <baseImage>java</baseImage>
                <!--类似于Dockerfile的ENTRYPOINT指令,执行结果就是 java -jar /app.jar -->
                <entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
                <!-- 指定打包的资源文件 -->
                <resources>
                    <resource>  
                        <targetPath>/</targetPath> <!-- 指定要打包的目录路径,这里是当前目录 -->
                        <directory>${project.build.directory}</directory> <!-- 指定要打包的根目录,这里是target目录 -->
                        <include>${project.build.finalName}.jar</include> <!-- 这里指定最后生成的jar包 -->
                    </resource>
                </resources>
            </configuration>
        </plugin>
    </plugins>
</build>

如果要使用Dockerfile文件:则将<baseImage>和<entryPoint>标签去掉,同时加上<dockerDirectory>标签,指明Dockerfile的文件路径。

3.4. 在阿里云创建一个 microservice-cloud-11-config-server-5001 仓库

3.5. 在CMD的命令提示符下,进入microservice-cloud-11-config-server-5001工程所在的目录,输入以下 命令,进行打包和上传镜像。

(mvn clean package 打包成jar ,然后docker:build构建成镜像,-DpushImage推送到仓库):

如果报mvn不是内部命令,则maven配置环境变量,然后重启电脑。

mvn clean package docker:build -DpushImage

4.自动部署开始

这里选择在idea中进行操作:

4.1.进入到当前的项目目录中,输入命令行,回车

4.2.开始生成镜像

4.3.开始推送镜像

4.4.推送成功

4.5.查看阿里云仓库是否有刚刚上传的镜像(步骤省略)。

4.6.查看Docker是否有刚刚上传的镜像,有的话就通过命令行创建容器,容器创建好之后自动启动。

docker run -it --name=eureka_server -p 6001:6001 1e48912cb924 /bin/bash

4.7.启动完毕。

4.8.测试服务是否能访问(注意:因为当前Linux的IP地址没有配置为固定,所以每次访问时的IP地址可能会不一样)

大功告成!!!

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值