美文网首页Docker
docker在java项目中的运用

docker在java项目中的运用

作者: 雨中星辰0 | 来源:发表于2018-09-12 14:41 被阅读0次

    环境准备:

    • java
    • maven
    • git
    • docker

    1. 普通java项目

    1. Dockerfile:在项目下创建一个文件Dockerfile
    FROM java:7
    COPY target/zeus-wide-api-1.9.jar /opt
    CMD ["java","-jar","/opt/zeus-wide-api-1.9.jar" ]
    

    说明:

    • FROM java:7 : 指定基础镜像为java7
    • COPY target/zeus-wide-api-1.9.jar /opt :将要运行的jar包拷贝到指定目录
    • CMD ["java","-jar","/opt/zeus-wide-api-1.9.jar" ] : 制定jar命令,启动jar包。
    1. 创建镜像:命令行cd到Dockerfile所在目录,执行以下命令:docker build -t zeus:v1 .

    说明:

    • zeus: 是镜像的名称
    • v1: 是镜像的tag
    1. 启动容器:docker run -p 20881:20880 zeus:v1

    说明:

    • -p:指定本机端口和远程端口的映射。
    • zeus: 镜像名称。
    • v1:镜像的tag。

    2. 含有dubbo的java项目(provider使用docker,consumer不使用docker)。

    1. Dockerfile:在项目下创建一个文件Dockerfile
    FROM java:7
    COPY target/zeus-wide-api-1.9.jar /opt
    ENV JAVA_OPTS=""
    ENTRYPOINT exec java $JAVA_OPTS -jar /opt/zeus-wide-api-1.9.jar
    

    FROM java:7
    COPY target/zeus-wide-api-1.9.1-SNAPSHOT.jar /opt
    CMD ["java","-jar","/opt/zeus-wide-api-1.9.1-SNAPSHOT.jar" ]
    

    说明:

    • 由于dubbo需要向zookeeper中注册provider的ip地址,默认情况下,使用的是本机的地址,在这里也就是容器的地址,而在docker中的ip与外部机器网络是不同的,使用docker容器地址会导致consumer无法连接provider。需要通过环境变量方式指定provider的向zookeeper注册的地址。
    • 创建镜像:docker build -t dubbotest:v1 .
    1. 启动容器:docker run -e DUBBO_IP_TO_REGISTRY=192.168.6.194 -p 20881:20881 dubbotest:v1

    说明:

    3. 普通java web项目

    1. Dockerfile:在项目下创建一个文件Dockerfile
    FROM tomcat:7
    COPY target/zeus-web-demo.war /usr/local/tomcat/webapps/
    

    说明:

    • FROM tomcat:7:使用tomcat的docker基础镜像,更多tomcat的docker版本可在(https://hub.docker.com/_/tomcat/)查看。
    • COPY target/zeus-web-demo.war /usr/local/tomcat/webapps/:将war包拷贝到tomcat的webapps下。

    版本7和8的映像中的默认Tomcat环境是

    CATALINA_BASE:   /usr/local/tomcat
    CATALINA_HOME:   /usr/local/tomcat
    CATALINA_TMPDIR: /usr/local/tomcat/temp
    JRE_HOME:        /usr
    CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar:/usr/local/tomcat/bin/tomcat-juli.jar
    

    版本6的映像中的默认Tomcat环境是:

    CATALINA_BASE:   /usr/local/tomcat
    CATALINA_HOME:   /usr/local/tomcat
    CATALINA_TMPDIR: /usr/local/tomcat/temp
    JRE_HOME:        /usr
    CLASSPATH:       /usr/local/tomcat/bin/bootstrap.jar
    
    1. 创建镜像:docker build -t zeus-web-demo/tomcat:7 .
    2. 启动容器:docker run -p 8080:8080 zeus-web-demo/tomcat:7

    含有dubbo的java web项目

    1. Dockerfile:
    FROM tomcat:7
    COPY target/zeus-web-demo-dubbo.war /usr/local/tomcat/webapps/
    
    1. 创建镜像:docker build -t zeus-web-demo-dubbo/tomcat:8 .
    2. 启动容器:docker run -e DUBBO_IP_TO_REGISTRY=192.168.6.194 -p 8080:8080 -p 20991:20991 zeus-web-demo-dubbo/tomcat:8

    说明:

    • DUBBO_IP_TO_REGISTRY:通过环境变量方式设置provider的ip
    • -p 20991:20991:dubbo服务对外的端口映射(根据实际填写)

    相关文章

      网友评论

        本文标题:docker在java项目中的运用

        本文链接:https://www.haomeiwen.com/subject/wgeugftx.html