上次使用別人打包好的docker鏡像,往裡邊加入文件,最終asp.net的docker容器化運行。 這次決定直接全新打包一個jexus+asp.net網站的docker包。 進入root目錄,併在root目錄下建立一個名稱為docker的目錄作為我們這次打包項目的基礎目錄。 首先準備.Net運行環境 ...
上次使用別人打包好的docker鏡像,往裡邊加入文件,最終asp.net的docker容器化運行。
這次決定直接全新打包一個jexus+asp.net網站的docker包。
進入root目錄,併在root目錄下建立一個名稱為docker的目錄作為我們這次打包項目的基礎目錄。
#cd /root #mkdir docker #cd docker
首先準備.Net運行環境,下載jexus,下載jexus 5.8.3的專業版,該版本已經包含了Linux下的.Net運行時Mono,不需要再額外安裝配置Mono,比較省事。
wget https://www.linuxdot.net/down/jexus-5.8.3-x64.tar.gz
然後準備網站目錄,wwwroot,將網站目錄cp到當前目錄下。
jexus的配置文件位於jexus/siteconf目錄下名為default。
網站的根目錄預設為/var/www/default,我們這裡把網站的根目錄設置成/var/www/wwwroot,因此需要對配置文件進行修改。
其他的個性化配置的修改如:URL重寫rewrite=/News/([(a-f)|(A-F)|(0-9)]{12})\.aspx /News/News.aspx?type=0&id=$1等等
,多個URL重寫就使用多個rewrite即可,每行一個。
運行環境,配置文件,網站目錄都在了,剩下的就是重頭戲,Dockerfile文件的編寫。
編寫完成的代碼如下:
#base image FROM centos # MAINTAINER MAINTAINER li.chao@163.com # put jexus-5.8.3-x64.tar.gz into /usr and unpack jexus ADD jexus-5.8.3-x64.tar.gz /usr/ # overwrite jexus config file into /usr/jexus/siteconf/ COPY default /usr/jexus/siteconf/ # put webroot COPY webroot /var/www/webroot # running required command install required fonts RUN yum install -y dejavu-fonts-common dejavu-lgc-sans-mono-fonts # change dir to /usr/jexus WORKDIR /usr/jexus EXPOSE 80
該鏡像以centos官方鏡像為基礎鏡像。依次執行瞭如下操作。
# 將jexus包解壓縮至容器的/usr/目錄下 ADD jexus-5.8.3-x64.tar.gz /usr/ # 覆蓋jexus的配置文件/usr/jexus/siteconf/default, COPY default /usr/jexus/siteconf/ # 複製網站根目錄到鏡像 COPY webroot /var/www/webroot # 運行安裝依賴包的操作,這裡安裝的是字體,沒有此字體將導致驗證碼顯示錯誤。 RUN yum install -y dejavu-fonts-common dejavu-lgc-sans-mono-fonts # 將工作目錄設置為/usr/jexus WORKDIR /usr/jexus
#輸出埠設置為80 EXPOSE 80
該過程其實可以進一步縮減,如事先將jexus解壓,並修改好配置文件,這樣就可以將ADD取消,用COPY代替,並且可以省略掉單獨複製配置文件的過程,甚至將jexus和webroot放入同一個目錄,只需要複製一次即可
在這裡,為了讓過程清晰,文件易讀,分開東哥步驟完成。
文件保存後,docker目錄下的文件如下
ll
然後運行打包程式
#docker build -t centos_jexus:v1 .
註意最後有個點,別丟了。運行後
打包完成:
運行該鏡像
成功!網站訪問一切正常!
(後記:由於該伺服器需要對多個網站提供服務,因此不能允許某個網站獨占80埠,因此在伺服器上安裝了Nginx,然後使用虛擬主機配置文件,將不同網站按照功能變數名稱分別重定向到本地不同的埠,最終實現了多個虛擬主機。且各個虛擬主機可以分I別運行與不同的Docker上)