Dockerfile建立tomcat和jdk,併發布java項目

1.準備好須要的jdk 和 tomcatjava

kun@ubuntu:~$ cd tomcat-docker/
kun@ubuntu:~/tomcat-docker$ ll
total 245232
drwxrwxr-x 4 kun kun      4096 May  6 11:34 ./
drwx------ 4 kun kun      4096 May  6 11:30 ../
-rw-rw-r-- 1 kun kun  14315520 May  5 18:03 apache-tomcat-8.5.34.tar
-rw-rw-r-- 1 kun kun       422 May  6 11:30 Dockerfile
-rw-rw-r-- 1 kun kun  44921007 May  6 15:37 forms.war
drwxr-xr-x 7 kun kun      4096 Dec 16 03:48 jdk/
-rw-rw-r-- 1 kun kun 191817140 May  5 18:03 jdk-8u201-linux-x64.tar.gz
drwxrwxr-x 9 kun kun      4096 May  5 18:12 tomcat/

這裏我將jdk和tomcat的tar.gz 包都經過 tar -zxvf解壓了 並經過mv 修改了文件夾名字爲jdk和tomcatlinux

(其實不解壓也能夠,2中說明爲啥我要解壓,爲啥不用解壓而我又先解壓了)web

2.編寫Dockerfile(示例以下)docker

FROM ubuntu:16.04
MAINTAINER ceshi@qq.com
COPY ./jdk /usr/local/jdk
COPY ./tomcat /tomcat

ENV JAVA_HOME /usr/local/jdk
ENV JRE_HOME $JAVA_HOME/jre
ENV CLASSPATH .:$JAVA_HOME/lib:$JRE_HOME/lib
ENV PATH $PATH:$JAVA_HOME/bin
ENV CATALINA_OPTS -Xms128m -Xmx1024m -XX:PermSize=64M -XX:MaxPermSize=512M
RUN cd /tomcat/logs && echo "1" >>count.txt
ENTRYPOINT /tomcat/bin/startup.sh && tail -F /tomcat/logs/catalina.out

根據顯示的行號來解釋apache

  1.咱們製做鏡像的基礎,在ubuntu16.04的系統上構建後續操做ubuntu

   2.維護者信息tomcat

  3~5.複製當前目錄下的jdk目錄 到容器內部的/usr/local/jdk目錄下 bash

    解釋下:app

    Dockerfile提供了COPY 和 ADD 兩種方式webapp

    COPY : COPY ./jdk  /usr/local/jdk            #直接原樣拷貝過去

    ADD   : ADD ./jdk-8u201-linux-x64.tar.gz  /usr/local/java        #拷貝過去,若是是壓縮包還會自動幫着解壓,原本是好事,可是解壓後文件夾名字一長串,不便於記憶,就直接先解壓好重命名好了再COPY過去

      7~13.一看就知道了 經過 ENV 來設置各類環境變量

      14.爲了示例RUN的使用, 經過RUN命令,後面就能夠執行各類linux命令

      15.表示啓動容器後執行的操做

 

將上述文件保存爲Dockerfile  注意大小寫,沒有後綴,而後進入到該目錄,執行命令構建鏡像

sudo docker build -t xwg/tomcat:v1 --rm=true .
#若是改變了Dockerfile名字,則須要指定 -f 文件名稱
xwg/tomcat:v1 鏡像的名字及tag,  最後的點表明當前目錄

啓動試試看

sudo docker run -p 8899:8080 --name tomcat_xwg xwg/tomcat:v1        





而後問題又來了,容器卻是啓動起來了,可是怎麼把咱們本身的war包丟裏面運行起來呢?

sudo docker cp forms.war tomcat_xwg:/usr/local/tomcat/webapps

  forms.war  不解釋

  tomcat_xwg:/usr/local/tomcat/webapps  冒號前面爲容器名稱或者id, 冒號後面爲tomcat的webapps全路徑

  丟進去就行了,會自動發佈的,不須要咱們再本身去啓動tomcat了,由於容器啓動後tomcat就默認啓動了  Dockerfile最後一行就是啓動tomcat

 

  丟進去後,控制檯就會檢測到,並自動部署

查看docker中tomcat日誌

使用docker exec進入Docker容器
  除了上面幾種作法以外,docker在1.3.X版本以後還提供了一個新的命令exec用於進入容器,這種方式相對更簡單一些,下面咱們來看一下該命令的使用:
  1. $ sudo docker exec --help   
 
 
接下來咱們使用該命令進入一個已經在運行的容器
    1. $ sudo docker ps  
    2. $ sudo docker exec -it 775c7c9ee1e1 /bin/bash  
相關文章
相關標籤/搜索