docker容器和maven项目

1:先创建一个maven项目(这边创建了eureka,服务发现者)

1.1这是我的pop.xml

jdk1.8

artifactId demo

name demo

docker.image.profix zhujm

构建的plugins的imagename就是zhujm/demole

xml version="1.0" encoding="UTF-8"?>
xmlns="http://maven.apache.org/POM/4.0.0"
                   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
4.0.0

com.zzy.demo
demo
demo
1.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        1.4.0.RELEASE
        
    
    
        UTF-8
        1.8
        
        com.zzy.demo.Main
        UTF-8
        zhujm
        1.3.3.RELEASE
    
    
        
            org.springframework.boot
            spring-boot-starter-web
        

        
            org.springframework.boot
            spring-boot-starter-test
        
        
            org.springframework.cloud
            spring-cloud-netflix-eureka-server
            1.2.3.RELEASE
        
    
    
        
            
                org.springframework.cloud
                spring-cloud-dependencies
                Camden.SR3
                pom
                import
            
        
    
    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
            
                com.spotify
                docker-maven-plugin
                0.4.3
                
                    ${docker.image.prefix}/${project.artifactId}
                    src/main/docker
                    
                        
                            /
                            ${project.build.directory}
                            ${project.build.finalName}.jar
                        
                    
                
            
            
        
    

Spotify 的 docker-maven-plugin 插件是用于构建 Maven 的 Docker Image

  • imageName指定了镜像的名字,本例为${docker.image.prefix}/${project.artifactId}
  • dockerDirectory指定 Dockerfile 的位置见下图
  • resources是指那些需要和 Dockerfile 放在一起,在构建镜像时使用的文件,一般应用 jar 包需要纳入。本例,只需一个 jar 文件。
这就是dockerfile所在路径,我指向src/main/docker

1.2:这就是我的Main主程序

package com.zzy.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@EnableEurekaServer
@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

1.3:这是我的配置文件

server.port=8000
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://localhost:${server.port}/eureka/
1.4这是我的目录结构


以上的资源参考http://blog.csdn.net/canot/article/details/52888597 

2.1:Dockerfile 的内容如下

FROM frolvlad/alpine-oraclejdk8

VOLUME /tmp

ADD demo-1.0.0.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

这个参考下http://blog.csdn.net/wsscy2004/article/details/25878223可以知道其中的意思

其中from是指该项目基于什么,由于我们这边是jar所以基于jdk,frolvlad/alpine-oraclejdk8这个是jdk在docker-hub那边的镜像,不过这个镜像有问题

我们使用这个

frolvlad/alpine-oraclejdk8:slim

VOLUME 是挂在地点,持久化

add 是将文件重命名

enrtypoint不知道

  • FROM(指定基础image)

  • VOLUME 指定了临时文件目录为/tmp。其效果是在主机 /var/lib/docker 目录下创建了一个临时文件,并链接到容器的/tmp。改步骤是可选的,如果涉及到文件系统的应用就很有必要了。
  • /tmp目录用来持久化到 Docker 数据文件夹,因为 Spring Boot 使用的内嵌 Tomcat 容器默认使用/tmp作为工作目录
  • 项目的 jar 文件作为 "app.jar" 添加到容器的
  • ENTRYPOINT 执行项目 app.jar。为了缩短 Tomcat 启动时间,添加一个系统属性指向 "/dev/urandom" 作为 Entropy Source

2.2linux安装docker

在linux服务器上装好docker,我的linux版本为centos7,这里不建议使用#yum install docker方式安装,因为这种方式安装的版本比较旧,而且在配置远程api时要好多错误,建议使用方式

#curl -fsSL https://get.docker.com/ | sh或#yum install docker-engine,这里以17.0.3-ce版本为例,使用

#docker version命令即可验证是否安装成功,接下来要想在windows中操作远程linux中的docker,那前提是必须

开启docker远程API,修改docker配置文件#vi /usr/lib/systemd/system/docker.service   ,进入编辑模式后,将ExecStart这一行后面加上 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock ,改完后如下所示

ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock  ,这里就写4个0,你可别改成自己的ip哦,保存后退出,重新加载配置文件#systemctl daemon-reload   ,启动docker #systemctl start docker  ,

输入#netstat -anp|grep 2375 显示docker正在监听2375端口,输入#curl 127.0.0.1:2375/info  显示一大堆信息,证明远程api就弄好了

2.3创建docker账户

https://hub.docker.com/去这里注册个账户

去验证邮箱后,去这里

Create Repository

去常见仓库名(仓库名是你以后的地址)
完毕后去linux登陆
登陆命令docker login

2.3构建 Docker Image

执行构建成为 docker image:

mvn package docker:build




你可能感兴趣的:(docker容器和maven项目)