zoukankan      html  css  js  c++  java
  • Docker + Maven + Docker-compose

    前言:

    docker:容器化管理

    maven:支持docker-maven的插件,通过 mvn clean -Dmaven.test.skip package dockerfile:build 打包命令和配置 Dockerfile 直接打出 docker 镜像

    docker-compose:服务端容器编排,使得多个容器可进行批量发布等管理操作

    一、集成dockerfile-maven插件

    <properties>
    <java.version>1.8</java.version>
    <guava.version>20.0</guava.version>
    <dockerfile-maven-plugin.version>1.3.6</dockerfile-maven-plugin.version>
    <docker-client.version>8.10.1</docker-client.version>
    <!-- Docker镜像仓库 -->
    <docker.registry>xxxx</docker.registry>
    <docker.namespace>xxx</docker.namespace>
    <docker.repo>xx</docker.repo>

    <java.lib>${project.basedir}/src/main/resources/lib</java.lib>
    </properties>

    <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!--开启本地引入JAR包--> <configuration> <includeSystemScope>true</includeSystemScope> </configuration> </plugin> <plugin>
              <!-- 这里引入dockerfile-maven插件 --> <groupId>com.spotify</groupId> <artifactId>dockerfile-maven-plugin</artifactId> <version>${dockerfile-maven-plugin.version}</version> <dependencies> <dependency> <groupId>com.spotify</groupId> <artifactId>docker-client</artifactId> <version>${docker-client.version}</version> </dependency> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>${guava.version}</version> </dependency> </dependencies> <configuration> <tag>${project.artifactId}-latest</tag> <repository>${docker.registry}/${docker.namespace}/${docker.repo}</repository> <buildArgs> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> </buildArgs> </configuration> </plugin> </plugins> </build>

    二、编写Dockerfile

    在pom.xml同级目录下编写Dockerfile

    FROM java:8
    VOLUME /tmp
    ARG JAR_FILE
    ADD ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-Xmx192m", "-XX:+UseConcMarkSweepGC", "-Djava.security.egd=file:/dev/./urandom","-XX:+HeapDumpOnOutOfMemoryError","-XX:HeapDumpPath=/mnt/logs/heapdump_test.hprof","-jar","/test-1.0.0.RELEASE.jar"]

    三、执行mvn dockerfile打包命令

    mvn clean -Dmaven.test.skip package dockerfile:build

    四、推送到镜像仓库

    docker login --username=root registry.cn-xxx.aliyuncs.com
    
    docker tag [镜像ID] registry.cn-xxx.aliyuncs.com/namespace/repo: [镜像版本号]
    
    docker push registry.cn-chengdu.aliyuncs.com/kidcloud/kidcloud_repo: [镜像版本号]

    五、安装docker-compose

    curl -L "https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
    docker-compose –version

    六、编写compose的yaml文件

    version: '1'
    services:
      demo:
        image: ${私服地址}/${命名空间}/${仓库名}:${镜像名称版本号}
        environment:
         - server.port=9001
         - eureka.client.serviceUrl.defaultZone=http://discovery:8761/eureka/
         - JAVA_OPTS='-Xmx512m -Xms512m'
        ports:
         - "9001:9001"
        networks:
         - demoNetwork
        volumes:
         - /mnt/logs:/mnt/logs
        external_links:
         - eureka-server:discovery
    networks:
      demoNetwork:
        external: true
    image 使用的镜像
    external_links 链接yaml编排之外的docker容器
    links 链接其他容器
    ports 端口映射
    expose 暴露端口
    volumes 挂载路径
    volumes_from 从容器挂载
    environment 环境变量

    七、docker-compose命令启动容器

    docker-compose -f xxx.yaml up -d
    docker-compose up -d

    更多docker-compose命令:

    https://www.cnblogs.com/linjiqin/p/8849432.html

  • 相关阅读:
    session绑定javaBean
    Some code changes cannot be hot swapped into a running virtual machine,
    抓包及WireShark工具介绍
    Jquery选择器特殊字符问题
    win7,win8 64位 VS2010/VS2013调试报错
    win7x64 连接oracle 客户端 VS2010调试 提示ORA-12154 TNS
    WebService本地VS运行正常,发布到IIS异常
    SQL语句增、删、改
    vb 去掉html中的回车和tab;转换部分html大写标签为小写
    C#语句——循环语句(for循环与for循环嵌套)
  • 原文地址:https://www.cnblogs.com/lcmlyj/p/12120089.html
Copyright © 2011-2022 走看看