【docker制作含jar包的镜像并启动】
-
制作
mkdir -p /docker/serviceImage/dataServiceImage/ #创建含dockerfile和jar包的目录
rm -f /docker/serviceImage/dataServiceImage/data.service.jar # 删除原有的jar
cd /docker/serviceImage/dataServiceImage/ #进入创建的目录下
cp xxx/xxx/xxx/data.service.jar . #将svn中的jar copy到当前目录下(即刚才创建的目录下)
source /etc/profile
docker build -t data.service:latest . # build镜像
docker tag data.service:latest 192.168.28.30:5000/data.service:latest
#给镜像改标签,通常用私服地址
docker login -u -admin -p admin123 192.168.28.30:500#登录到私服
docker push 192.168.28.30:5000/data.service:latest #推送镜像
Dockerfile
FROM java:8 #第一条指令,指定基础镜像
MAINTAINER kitty "kitty@126.com" # 作者名和email
WORKDIR /opt/latech/data.service/ #指定容器的一个目录, 容器启动时执行的命令会在该目录下执行
ADD latech.data.service.jar /opt/latech/data.service/ #将jar加入到容器中
RUN echo "Asia/Shanghai" > /etc/timezone
ENTRYPOINT ["java","-jar","-Duser.timezone=GMT+08","latech.data.service.jar"] #容器启动时要执行的命令
注意:
1)Dockerfile和jar包要在同一级,并在此级上执行打包命令
2)jar包不含xml,properties文件
3)同级放xml,properties文件,启动时挂载到容器
-
启动
docker login -u -admin -p admin123 192.168.28.30:5000 #登录到私服
docker pull 192.168.28.30:5000/data.service:latest #拉取镜像
docker run -it -d --restart always --name dataService -p 18080:18080 \
-v /etc/localtime:/etc/localtime \
-v xxx/xxx/dubbo.properties:/opt/latech/data.service/dubbo.properties
-v xxx/xxx/xxx/jdbc.properties:/opt/latech/data.service/jdbc.properties
-v xxx/xxx/xxx/logback.xml:/opt/latech/data.service/logback.xml
-v xx/xx/xxx/logs:/home/latech/data.service/ \ #后者是logback.xml里配置的日志地址
192.168.28.30:5000/data.service:latest
注意:此处有一个对容器时间和宿主机时间不一致的处理
build镜像是有RUN echo "Asia/Shanghai" > /etc/timezone
run时有-v /etc/localtime:/etc/localtime
【docker制作含war包的镜像并启动】
-
制作(参考上面制作jar包的镜像)
Dockfile
FROM tomcat:8.5
MAINTAINER kitty "qxzhihi@126.com"
WORKDIR /usr/local/tomcat/webapps/
RUN rm -rf /usr/local/tomcat/webapps/*
ADD latechMonitor.war /usr/local/tomcat/webapps/ROOT.war
RUN unzip /usr/local/tomcat/webapps/ROOT.war -d /usr/local/tomcat/webapps/ROOT #先解压,以便挂载文件
RUN echo "Asia/Shanghai" > /etc/timezone
-
启动
docker login -u -admin -p admin123 192.168.28.30:5000 #登录到私服
docker pull 192.168.28.30:5000/latechWeb:latest #拉取镜像
docker run -it -d --restart always --name $NEW_JOB_NAME \
-v /etc/localtime:/etc/localtime \
-v /xxx/xxx/xxx/dubbo.properties:/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/dubbo.properties \
-v /xxx/xxx/xxx/redis.properties:/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/redis.properties \
-v /xxx/xx/xxx/logs:/usr/local/tomcat/webapps/logs/ \
-p 9734:8080 192.168.28.30:5000/latechWeb:latest
注意:
关于容器间不能访问的问题,视docker版本不同
有的用-p直接能代理到宿主机端口,其他容器可以访问
当访问不到时,启动容器使用--net=host可解决此问题
网友评论