环境准备:
- java
- maven
- git
- docker
1. 普通java项目
- 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包。
- 创建镜像:命令行cd到Dockerfile所在目录,执行以下命令:
docker build -t zeus:v1 .
说明:
- zeus: 是镜像的名称
- v1: 是镜像的tag
- 启动容器:
docker run -p 20881:20880 zeus:v1
说明:
- -p:指定本机端口和远程端口的映射。
- zeus: 镜像名称。
- v1:镜像的tag。
2. 含有dubbo的java项目(provider使用docker,consumer不使用docker)。
- 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 .
。
- 启动容器:
docker run -e DUBBO_IP_TO_REGISTRY=192.168.6.194 -p 20881:20881 dubbotest:v1
说明:
- DUBBO_IP_TO_REGISTRY : dubbo向注册中心注册的provider的地址。
- 更多dubbo在docke中的配置可查看:https://www.jianshu.com/p/b045dbdb8e12
3. 普通java web项目
- 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
- 创建镜像:
docker build -t zeus-web-demo/tomcat:7 .
- 启动容器:
docker run -p 8080:8080 zeus-web-demo/tomcat:7
含有dubbo的java web项目
- Dockerfile:
FROM tomcat:7
COPY target/zeus-web-demo-dubbo.war /usr/local/tomcat/webapps/
- 创建镜像:
docker build -t zeus-web-demo-dubbo/tomcat:8 .
- 启动容器:
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服务对外的端口映射(根据实际填写)
网友评论