微服务框架(五)Docker镜像化Dubbo微服务

  此系列文章将会描述Java框架Spring Boot、服务治理框架Dubbo、应用容器引擎Docker,及使用Spring Boot集成Dubbo、Mybatis等开源框架,其中穿插着Spring Boot中日志切面等技术的实现,然后通过gitlab-CI以持续集成为Docker镜像。
  本文为将Dubbo微服务实现Docker镜像化

本系列文章中所使用的框架版本为Spring Boot 2.0.3-RELEASE,Spring 5.0.7-RELEASE,Dubbo 2.6.2。

Docker镜像化

需要打包为docker镜像的项目,artifactId请设置为无特殊字符的小写字母字串,否则docker-maven-plugin会出错

配置docker-maven-plugin插件

maven pom.xml加入com.spotify:docker-maven-plugin插件配置(配置对应properties)

通用Dubbo POM中已集成,作为parent引入即可,详见文档

<plugin>
    <groupId>com.spotifygroupId>
    <artifactId>docker-maven-pluginartifactId>
    <version>1.0.0version>
    <configuration>
        <imageName>${registry.url}dubbo/${project.artifactId}imageName>
        <dockerDirectory>src/main/resources/dockerdockerDirectory>
        <imageTags>
            <imageTag>${image.tag}imageTag>
            <imageTag>latestimageTag>
        imageTags>
        <resources>
            <resource>
                <targetPath>/targetPath>
                <directory>${project.build.directory}directory>
                <includes>
                    <include>${project.build.finalName}.jarinclude>
                    <include>lib/*.jarinclude>
                includes>
            resource>
        resources>
    configuration>
plugin>

properties配置示例

参数 描述 可否为空
registry.url Docker私有仓库url 可为空,此时镜像名为dubbo/${project.artifactId}
image.tag 镜像标签 可为空,此时只生成latest镜像标签
    <properties>
        <registry.url>0.0.0.1/registry.url>
        <image.tag>0.0.1image.tag>
    properties>

编写Dockerfile

Dockerfile文件路径需在docker-maven-plugin插件配置

注:文件存放路径需对应上述插件配置中

 # Dockerfile
 # 基础镜像
FROM openjdk:8-jdk-alpine

 # 设置工作目录
WORKDIR /

 # 将jar文件拷贝到镜像中。注:docker-maven-plugin 会将jar文件拷贝到镜像构建目录中
ADD *.jar app.jar
ADD lib lib/

 # 运行时设置JAVA环境参数
ENV JAVA_OPTS="-Duser.timezone=Asia/Shanghai"

 # 端口暴露(推荐不暴露端口,在运行容器时才对端口进行绑定)
EXPOSE 9702

 #ENTRYPOINT不支持环境变量展开
ENTRYPOINT ["java", "-Duser.timezone=Asia/Shanghai", "-jar", "/app.jar"]

编写CI文件

编写CI文件.gitlab-ci.yaml,将docker镜像打包设置为手动触发

注:gitlab项目需配置环境变量DOCKER_HOST=tcp://:

deploy_docker:
  stage: deploy
  script:
    - echo "Deploy as a docker container"
    - 'mvn clean package docker:build -DskipTests'
  when: manual
  only:
  - master

查看并运行镜像

查看镜像

docker images

运行镜像

docker run -d \
    --name  \
    --net dubbo \
    -e DUBBO_IP_TO_REGISTRY= \
    -e DUBBO_PORT_TO_REGISTRY= \
    -p :: \
    -v dubbo-log:/log \
     \
    --spring.profiles.active=

参考资料:

  1. Maven Docker插件

你可能感兴趣的:(Java,微服务,容器化,微服务框架,Spring,Boot,+,Dubbo,+,Docker)