小网站的容器化(下):网站容器化的各种姿势,先跟着撸一波代码再说!
作者 |?王洪鵬
責編 | Carol
出品 | CSDN云計算(ID:CSDNcloud)
封圖|?CSDN下載于視覺中國?
上篇文章:小網站的容器化(上)?中我們大致描述了下個人網站在日常維護中的痛點,文章的后半部分我們添加了一個純靜態網站容器化的簡單示例。這篇文章作為上篇文章的續,我們接著看下靜態網站容器化的剩余部分,以及常見個人動態網站容器化的部分。
?
靜態網站容器化
上篇文章中,我們已經對靜態網站的容器化過程以及容器化期間需要注意的事項做過描述,也添加過一個個人博客網站容器化的示例,但是這個示例僅僅是為靜態網站容器化的過程作一個展現。我們知道,實際部署中,即使是純靜態頁面的網站也不會那樣進行部署,即直接將所有的內容,包括網站本身的文件和web server全部打包進一個容器里面。
這種部署方式,不利于網站后續的維護和更新,比如網站訪問時我們一般對外提供的訪問端口為80或者443,如果幾個網站的web server對應的容器跑在一臺宿主機上,幾個容器都用80端口時會存在端口沖突的問題,而且在這種情況下我們需要為每個網站去專門配置一個域名。實際使用中我們一般不會這樣進行操作,也不會為一個簡單的個人簡歷靜態網站去專門購買一個域名。
為解決這種問題,我們一般會在網站的web server前面再添加一個公共的反向代理組件,比如nginx,來作為多個個人小網站統一的訪問入口,這樣在對網站的內容進行更新時,我們只需要去更新反向代理之后對應的應用即可,不會因為某個網站的更新而影響到其他網站的正常訪問。
另外,我們負載均衡之后的不同網站的應用此時可以配置80、443之外的端口,對外的80、443端口的監聽放在負反向代理上即可,而且這種情況下只需要購買一個域名,然后將域名解析到公共的負載均衡地址,不同的網站采用不同的子域名即可,因此采用這種模式既利于網站的更新維護,且在經濟方面更加的劃算。下面就讓我們一起看下這種情況下網站的容器化是如何進行的。
上篇文章中關于網站本身的打包及其鏡像構建的過程我們已經詳細的說過,包括git配置、Dockerfile書寫、鏡像構建、基本容器管理等,因此在此我們就不再贅述,接下來我們直接看上文中說到的反向代理的添加過程。?
在此我們假設我們給應用配置的端口為8080,然后配置nginx獨占80端口,然后我們就可以根據客戶端對域名的請求來將請求分發到對應的容器中的應用。?
首先我們用容器化的方式部署一個我們的網站,假設我們網站使用的web server 為tomcat,監聽的端口使用默認的8080。
# 下載tomcat 鏡像
[root@localhost?~]#?docker?pull?hub.c.163.com/public/tomcat:7.0.28Trying?to?pull?repository?hub.c.163.com/public/tomcat?...7.0.28:?Pulling?from?hub.c.163.com/public/tomcatf46924f139ed:?Already?existsa3ed95caeb02:?Pull?complete4849cac99801:?Already?exists5e90c4274a33:?Pull?completee8f49ae1f54f:?Pull?completecfd12ae39390:?Pull?complete1065252df5d5:?Pull?complete0fe337adb9c6:?Pull?complete9e5f36235195:?Pull?complete7edf271c9251:?Pull?completec255b3c6176a:?Pull?completed1aa8ac63c58:?Pull?completef9ab623b3035:?Pull?completef7da31d1f835:?Pull?complete48e150291322:?Pull?complete069d27b85888:?Pull?complete1835e80c6480:?Pull?completeDigest:?sha256:dd6c708e981e61f6aae56dac2ef91a78b28e0589743b44b7f174a57b1f097154Status:?Downloaded?newer?image?for?hub.c.163.com/public/tomcat:7.0.28#?運行tomcat容器(應用代碼在同一個容器中)
[root@localhost?~]#?docker?rm?-f?tomcat?c64f076c3fda8d3183e570ad2af7253340de4fb48d098b6608f89fbf7715af0cc64f076c3fda8d3183e570ad2af7253340de4fb48d098b6608f89fbf7715af0c[root@localhost?~]#?docker?run?--name?tomcat?-d?-p?8080:8080??hub.c.163.com/public/tomcat:7.0.289a1e7c9909b8ce0299feecb5d424e16f8769476ef31d237ada8b8827c2106265[root@localhost?~]#?hostname?-I192.168.19.128?192.168.122.1?172.17.0.1#?查看下端口是否已經在正常監聽
[root@localhost?~]#?netstat?-anupt?|?grep?8080tcp6???????0??????0?:::8080?????????????????:::*????????????????????LISTEN??????48830/docker-proxy直接用容器所在機器的IP加8080端口訪問,看下網站對應的容器是否已經運行起來:
可以看到此時網站對應的應用已經運行起來了,接下來我們配置下nginx反向代理。
在配置nginx的反向代理之前,第一步我們需要先下載、部署下nginx,在此我們直接以官網文檔中的提供的方式進行部署:
#?安裝依賴工具
[root@localhost?~]#?yum?install?-y?yum-utils?#?配置yum 源,新建一個名為nginx.repo的配置文件
[root@localhost?~]#?vim?/etc/yum.repos.d/nginx.repo加入如下yum配置:
[nginx-stable]name=nginx?stable?repobaseurl=http://nginx.org/packages/centos/$releasever/$basearch/gpgcheck=1enabled=1gpgkey=https://nginx.org/keys/nginx_signing.keymodule_hotfixes=true[nginx-mainline]name=nginx?mainline?repobaseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/gpgcheck=1enabled=0gpgkey=https://nginx.org/keys/nginx_signing.keyetodule_hotfixes=true#?清空本地緩存
# 安裝nginx
[root@localhost?~]#?yum?install?-y?nginxLoaded?plugins:?fastestmirror,?langpacksLoading?mirror?speeds?from?cached?hostfile?#?運行nginx
# 確認nginx是否可以正常的運行起來
[root@localhost?~]#?systemctl?status?nginx●?nginx.service?-?nginx?-?high?performance?web?serverLoaded:?loaded?(/usr/lib/systemd/system/nginx.service;?disabled;?vendor?preset:?disabled)Active:?active?(running)?since?Thu?2020-03-19?03:46:00?PDT;?6s?agoDocs:?http://nginx.org/en/docs/Process:?27957?ExecStart=/usr/sbin/nginx?-c?/etc/nginx/nginx.conf?(code=exited,?status=0/SUCCESS)Main?PID:?27958?(nginx)Memory:?2.9MCGroup:?/system.slice/nginx.service├─27958?nginx:?master?process?/usr/sbin/nginx?-c?/etc/nginx/nginx.conf└─27959?nginx:?worker?processMar?19?03:46:00?localhost.localdomain?systemd[1]:?Starting?nginx?-?high?performance?web?server...Mar?19?03:46:00?localhost.localdomain?systemd[1]:?PID?file?/var/run/nginx.pid?not?readable?(yet?)?after?start.Mar?19?03:46:00?localhost.localdomain?systemd[1]:?Started?nginx?-?high?performance?web?server.#?配置開機自啟動,防止服務器重啟后服務掛掉的情況
[root@localhost?~]#?systemctl?enable?nginxCreated?symlink?from?/etc/systemd/system/multi-user.target.wants/nginx.service?to?/usr/lib/systemd/system/nginx.service.Nginx正常運行起來的話,通過訪問服務器的IP地址,可以查看到如下頁面:
雖然web server tomcat 和反向代理nginx已經運行起來,但是默認情況下nginx中的配置是沒有指向我們的web server tomcat的,因此我們接下來需要我們進行一些相關的配置,在此我們假設剛剛tomcat應用的域名為test.tomcat.com。
修改nginx配置,nginx默認配置文件為/etc/nginx/nginx.conf,在nginx配置文件中添加如下配置,將訪問test.tomcat.com的請求轉向我們網站應用對應的tomcat容器:?
首先我們需要在nginx的配置文件的路徑/etc/nginx/conf.d下新建一個vhost.conf配置文件,這個配置文件就是用來配置我們網站反向代理的配置文件(不建議直接在nginx的默認配置文件/etc/nginx/nginx.conf 中進行配置,建議為每個vhost配置單獨的配置文件):?
#?新建配置文件
[root@localhost?~]#?cd?/etc/nginx/conf.d[root@localhost?conf.d]#?lsdefault.conf[root@localhost?conf.d]#?vim?vhost.conf在打開的新配置文件中添加如下配置信息:
server{listen?80;server_name?test.tomcat.com;location?/?{proxy_pass?http://127.0.0.1:8080;}}修改完成后,保存下配置。?
上述配置大意為,監聽來自80端口的訪問,如果訪問的域名是test.tomcat.com則將請求全部轉發到http://127.0.0.1:8080,也就是轉發到我們tomcat 應用容器。?
Nginx配置完成后,需要reload后者重啟下nginx服務,配置才能生效:
[root@localhost?conf.d]#?nginx?-s?reload或者:
[root@localhost?conf.d]#?systemctl?restart?nginx[root@localhost?conf.d]#?systemctl?status??nginx接下來訪問下nginx的80端口看下是否可以將請求轉發到我們的8080端口的tomcat容器,訪問nginx之前我們需先配置下本地的hosts,實際配置中一般大家都給自己的網站都購買了域名,這樣的話實際配置時可省略掉這一步驟,配置hosts如下:
#####?self?test192.168.19.128 ?test.tomcat.com
訪問nginx中配置的域名:
截圖中可以看到已經返回了tomcat的數據,說明nginx的反向代理到后端的tomcat 8080端口已經配置成功了。
動態網站容器化
?
以上是對靜態網站靜態化的一個簡單說明,實際使用中,即使個人網站一般也很少做成靜態網站這種形式,所以接下來我們看下常見的個人站點的容器化的過程。
1.?Node.JS 站點容器化?
在描述Node.JS站點的容器化之前我們先在容器所在的虛擬機上部署一個簡單的node.js運行環境和node.js應用。
Node.js 的整個安裝部署非常簡單,node.js 官網為我們提供了多種安裝部署方式,在此我們以二進制包安裝的方式為例看下具體的安裝過程:?
#?下載node.js
[root@localhost ~]# wget https://nodejs.org/dist/v10.9.0/node-v10.9.0-linux-x64.tar.xz
# 解壓安裝包
[root@localhost ~]# tar xvf node-v10.9.0-linux-x64.tar.xz -C /usr/local
# 查看node.js文件
[root@localhost ~]# tar xvf node-v10.9.0-linux-x64.tar.xz -C /usr/local
[root@localhost ~]# ls /usr/local/node-v10.9.0-linux-x64/
bin??CHANGELOG.md??include??lib??LICENSE??README.md??share[root@localhost ~]# ls /usr/local/node-v10.9.0-linux-x64/bin
可以看到默認情況下不僅node本身的進程已經給我們裝上了,包管理工具npm默認也已經安裝好了。?
#?配置下軟連接,方便后續使用
[root@localhost ~]# ln -s /usr/local/node-v10.9.0-linux-x64/bin/node /usr/local/bin
[root@localhost ~]# ln -s /usr/local/node-v10.9.0-linux-x64/bin/npm /usr/local/bin
# 查看node版本
[root@localhost ~]# node -v
v10.9.0
接下來我們寫個node.js 簡單示例來作為我們的應用。?
新建app.js,加入示例代碼:
var?http?=?require('http');http.createServer(function?(request,?response)?{//?發送?HTTP?頭部//?HTTP?狀態值:?200?:?OK//?內容類型:?text/plainresponse.writeHead(200,?{'Content-Type':?'text/plain'});//?發送響應數據?"Hello?World"response.end('Hello?World\n');}).listen(8888);//?終端打印如下信息console.log('Server?running?at?http://127.0.0.1:8888/');從文件的注釋部分也能看出,我們是起了一個HTTP 服務器,監聽端口為8888,接下來我們運行下這段代碼:
[root@localhost ~]# node app.js
Server running at http://127.0.0.1:8888/
從日志提示我們可以看出此時HTTP Server已經在運行中了,接下來我們訪問下這個Server,看下能否訪問:
能正常訪問到,則說明我們在虛擬機上的node已經正常跑起來了。?
剛剛我們是在前臺運行的我們的node程序,前臺運行程序適合臨時測試下程序,如果是長期運行的程序一般都是建議在后臺跑,在此我們以nohup這個工具為例,將程序在后臺運行一下:
[root@localhost ~]# nohup node app.js ?&> app.log &
[1]?128553 [root@localhost?~]# [root@localhost?~]# [root@localhost?~]#[root@localhost ~]# netstat -anupt | grep 8888
tcp6???????0??????0?:::8888?????????????????:::*????????????????????LISTEN??????128553/node這樣程序已經在后臺運行起來,不再占據前端,我們也不用擔心接下來的操作過程中因為誤操作會將程序意外退出。?
前面的訪問我們也看到了,我們的HTTP server 默認監聽的是8888端口,因此我們也需要用nginx做下反向代理。假設我們node.js 站點的域名是test.nodejs.com,和上文中tomcat站點的配置一樣,首先我們需要先在nginx中新建一個網站的配置文件,由于上文中tomcat站點已經新建了一個單獨的配置文件,在此我們不再重復進行新建,使用已經新建的即可。
修改/etc/nginx/conf.d/vhost.conf文件,加入對node.js站點的配置:
[root@localhost ~]# vim /etc/nginx/conf.d/vhost.conf
修改后內容如下:
?
在此我們給node.js站點配置的域名為test.node.com,實際使用中不需要重新為node申請域名,直接使用一個tomcat站點的子域名即可。
# 重啟nginx 服務
[root@localhost ~]# systemctl restart nginx?
# 查看nginx狀態
[root@localhost ~]# systemctl status ?nginx
●?nginx.service?-?nginx?-?high?performance?web?serverLoaded:?loaded?(/usr/lib/systemd/system/nginx.service;?enabled;?vendor?preset:?disabled)Active:?active?(running)?since?Sun?2020-03-29?21:50:24?PDT;?6h?agoDocs:?http://nginx.org/en/docs/Process:?10503?ExecStop=/bin/kill?-s?TERM?$MAINPID?(code=exited,?status=0/SUCCESS)Process:?128736?ExecStart=/usr/sbin/nginx?-c?/etc/nginx/nginx.conf?(code=exited,?status=0/SUCCESS)Main?PID:?128737?(nginx)CGroup:?/system.slice/nginx.service├─128737?nginx:?master?process?/usr/sbin/nginx?-c?/etc/nginx/nginx.conf└─128738?nginx:?worker?processMar?29?21:50:23?localhost.localdomain?systemd[1]:?Starting?nginx?-?high?performance?web?server...Mar?29?21:50:24?localhost.localdomain?systemd[1]:?Started?nginx?-?high?performance?web?server.和前文中tomcat的反向代理配置一樣,我們需要先為node.js 站點的域名配置下hosts,具體如下:
192.168.19.128 ?test.node.com
瀏覽器訪問test.node.com
上圖中可以看出,node.js站點的反向代理已經配置成功了,node.js站點可以直接通過nginx的80端口進行訪問了。
2.?WordPress 站點容器化
在個人網站搭建工具中,WordPress 是非常受大眾歡迎的,因此使用WordPress搭建的個人站點不在少數,接下來我們會一起看下WordPress 站點的容器化。
細心的讀者可能會發現前面的兩個示例中我們并未提及每個網站必備的組件—數據庫,因為數據庫的容器化比較特殊,因此我們單獨拿出來在WordPress站點的例子中描述下。?
前面的實例中我們在打包鏡像時直接將代碼、配置文件等一起打包到了鏡像里面,這種方式在無狀態的服務這種情況時是可以的,但如果是mysql數據庫這種有狀態服務的情況這種打包鏡像的方式很顯然就不行了,這種情況下直接將正在運行的容器保存為鏡像主要存在兩個問題:
(1)?數據庫類這種無狀態應用一般都需要賬號密碼信息進行鑒權,我們將這些信息配置到應用的配置文件中,如果將這些文件打包到鏡像里面,然后將其push到公有的鏡像倉庫,則其他人可以通過下載我們上傳的鏡像來查看到我們的數據庫賬號信息。
(2)?容器是無狀態的,如果我們重啟容器或者容器被意外的刪除,則我們運行起容器后新寫入的數據會丟失,包括們存儲在mysql數據庫中的數據。?
好在Docker 為我們提供了volume這種產品功能,利用volume我們可以將容器所在宿主機上的某個目錄掛載到容器中,通過這種方式將容器中的目錄和容器所在宿主機上的目錄建立一種綁定關系。通過這種方式,容器中MySQL寫的數據就會被同步到宿主機的目錄之上,這樣當我們重啟容器或者刪除容器時容器運行后新寫入的數據就不會丟失。
需要注意的是,掛載了vloume的容器,在進行鏡像的保存時并不會將vloume中的數據保存到鏡像中,因此在更新容器后注意還需要再次掛載下我們的volume。
接下來我們具體看下wordpress站點的容器化過程,wordpress在此我們以4.5.2為例。
??# 首先我們需要先獲取下wordpress鏡像
??[root@localhost ~]# docker pull hub.c.163.com/public/wordpress:4.5.2
Trying?to?pull?repository?hub.c.163.com/public/wordpress?...4.5.2:?Pulling?from?hub.c.163.com/public/wordpressf46924f139ed:?Already?existsa3ed95caeb02:?Pull?complete4849cac99801:?Already?exists682d1e7cffd4:?Pull?complete162c309da2f9:?Pull?complete2161e9680cdd:?Pull?complete43391942ffef:?Pull?completed77d4c0e8fd0:?Pull?complete6a6f091f97d8:?Pull?complete53fa8ad0f2eb:?Pull?complete28ee09fdd4e4:?Pull?completedf176ee322b5:?Pull?complete44104685ee03:?Pull?complete1822edc7ae75:?Pull?completeecfd62e25a20:?Pull?completef3c6ecfde54e:?Pull?complete81113ad0b0e3:?Pull?completebb5c02f581db:?Pull?complete1a10055e720e:?Pull?completeDigest:?sha256:894e1cd6b398ea895f94d803e6de71c12c9b68fa3663e10c96ed4bc22adcb54aStatus:?Downloaded?newer?image?for?hub.c.163.com/public/wordpress:4.5.2??# 鏡像下載完成后,我們運行下容器,看下載的鏡像是否正常
[root@localhost?~]#?docker?run?--name?wordpress?-p?8082:80??-d?hub.c.163.com/public/wordpress:4.5.2ae09f3291607130bd78186caadb02d0ba8af5d684b82165ab19cd89c1a145833?因為nginx默認已經監聽了80端口,為防止出現端口沖突,此處我們將apache web server 的端口映射為8082,容器名字為wordpress。?
#?查看端口是否在監聽了
[root@localhost?~]#?netstat?-anupt?|?grep?8082tcp6???????0??????0?:::8082?????????????????:::*????????????????????LISTEN??????4259/docker-proxy# 進入容器看下wordpress的各個組件是否已經運行起來了
[root@localhost?~]#?docker?exec?-ti?wordpress?bashroot@ae09f3291607:/var/www#?ps?auxUSER????????PID?%CPU?%MEM????VSZ???RSS?TTY??????STAT?START???TIME?COMMANDroot??????????1??0.0??0.0???4192???576??????????Ss???04:36???0:00?/bin/sh?-c?/etc/init.d/mysql?start?&&?/tmp/entrypoint-wd.sh?apache2?&&?/usr/sbin/sshd?-D?||?/usr/sbin/sshd?-Droot?????????34??0.0??0.0???4192???708??????????S????04:36???0:00?/bin/sh?/usr/bin/mysqld_safemysql???????363??0.1??6.4?371504?64136??????????Sl???04:36???0:00?/usr/sbin/mysqld?--basedir=/usr?--datadir=/var/lib/mysql?--plugin-dir=/usr/lib/mysql/plugin?--user=mysql?--pid-file=/var/run/mysqld/mysqld.pidroot????????364??0.0??0.0???4100???632??????????S????04:36???0:00?logger?-t?mysqld?-p?daemon.errorroot????????617??0.0??0.9?158924??9588??????????Ss???04:37???0:00?/usr/sbin/apache2?-k?startroot????????619??0.0??0.3??49952??3028??????????S????04:37???0:00?/usr/sbin/sshd?-Dwww-data????621??0.0??0.6?158956??6008??????????S????04:37???0:00?/usr/sbin/apache2?-k?startwww-data????622??0.0??0.6?158956??6008??????????S????04:37???0:00?/usr/sbin/apache2?-k?startwww-data????623??0.0??0.6?158956??6008??????????S????04:37???0:00?/usr/sbin/apache2?-k?startwww-data????624??0.0??0.6?158956??6008??????????S????04:37???0:00?/usr/sbin/apache2?-k?startwww-data????625??0.0??0.6?158956??6008??????????S????04:37???0:00?/usr/sbin/apache2?-k?startroot????????626??2.3??0.1??17836??1840??????????Ss???04:41???0:00?bashroot????????631??0.0??0.1??15320??1136??????????R+???04:41???0:00?ps?aux可以看到當前鏡像默認使用的是LAMP架構,且各個組件已經在運行中。然后我們看下mysql默認的數據目錄,從上面的信息中可以看到為:/var/lib/mysql。需要注意的是我們不能直接將宿主機上的目錄掛載到我們的wordpress容器中的mysql數據存放路徑,因為直接掛載會導致容器中MySQL 的數據被覆蓋掉,為避免MySQL的數據被覆蓋,在此我們先將已經存在的mysql數據拷貝出來,然后再進行宿主機目錄的掛載。然后接下來我們將這個目錄和宿主機的目錄關聯一下。?
# 本地新建下wordpress中mysql的數據目錄
[root@localhost?~]#?mkdir?/data/mysql#?將wordpress容器中已經存在的mysql數據拷貝到宿主機上
#?刪掉當前已經在運行的wordpress容器
[root@localhost?~]#?docker?rm?-f?wordpressWordpress[root@localhost?~]#?docker?psCONTAINER?ID????????IMAGE???????????????COMMAND?????????????CREATED?????????????STATUS??????????????PORTS???????????????NAMES[root@localhost?~]## 重新運行wordpress容器并掛載mysql的數據目錄
[root@localhost?~]#?docker?run?--name?wordpress?-v?/data/mysql/:/var/lib/mysql/?-p?8082:80??hub.c.163.com/public/wordpress:4.5.2?和前面的靜態站點以及node.js程序一樣,由于我們監聽的8082端口是非80端口,因此還需要為wordpress站點配置下反向代理。?
具體過程和前面配置node.js站點的一樣,假設我們的wordpress站點的域名為test.wordpress.com,然后直接在現存的vhosts文件中進行配置即可,具體如下:
#?修改nginx中vhost.conf配置
[root@localhost?~]#?vim?/etc/nginx/conf.d/vhost.conf修改后的配置信息如下:
server{listen?80;server_name?test.tomcat.com;location?/?{proxy_pass?http://127.0.0.1:8080;}}server{listen?80;server_name?test.node.com;location?/?{proxy_pass?http://127.0.0.1:8888;}}server{listen?80;server_name?test.wordpress.com;location?/?{proxy_pass?http://127.0.0.1:8082;}}#?重啟nginx服務
[root@localhost ~]# systemctl restart nginx
[root@localhost ~]# systemctl status ?nginx
●?nginx.service?-?nginx?-?high?performance?web?serverLoaded:?loaded?(/usr/lib/systemd/system/nginx.service;?enabled;?vendor?preset:?disabled)Active:?active?(running)?since?Thu?2020-04-02?04:37:09?PDT;?6s?agoDocs:?http://nginx.org/en/docs/Process:?47753?ExecStop=/bin/kill?-s?TERM?$MAINPID?(code=exited,?status=0/SUCCESS)Process:?47774?ExecStart=/usr/sbin/nginx?-c?/etc/nginx/nginx.conf?(code=exited,?status=0/SUCCESS)Main?PID:?47775?(nginx)CGroup:?/system.slice/nginx.service├─47775?nginx:?master?process?/usr/sbin/nginx?-c?/etc/nginx/nginx.conf└─47776?nginx:?worker?processApr?02?04:37:09?localhost.localdomain?systemd[1]:?Starting?nginx?-?high?performance?web?server...Apr?02?04:37:09?localhost.localdomain?systemd[1]:?Started?nginx?-?high?performance?web?server.?
和前面的過程一樣,在訪問站點之前我們需要先配置下hosts文件(真實環境中購買了域名且加了域名的解析可忽略), 具體如下:
192.168.19.128 ?test.tomcat.com
192.168.19.128 ?test.node.com
192.168.19.128 ?test.wordpress.com?
接下來我們看下容器化后的wordpress 站點是否可以正常訪問:
容器化小結
?
本文是上篇《小網站的容器化》的續篇,在此我們主要看了下常見的個人站點的容器化過程,并列舉了node.js和WordPress 兩個站點實例。
既然容器化可以為我們帶來這么多的方便之處,那還是建議那些苦于網站更新的小伙伴們嘗試一下容器化,同時也借此了解下容器云領域的廣闊天地。
?
同時,歡迎所有開發者掃描下方二維碼填寫《開發者與AI大調研》,只需2分鐘,便可收獲價值299元的「AI開發者萬人大會」在線直播門票!
推薦閱讀:你知道嗎?其實 Oracle 直方圖自動統計算法存在這些缺陷!(附驗證步驟) 你公司的虛擬機還閑著?基于 Jenkins 和 Kubernetes 的持續集成測試實踐了解一下!一站式殺手級 AI 開發平臺來襲!告別切換零散建模工具那些神一樣的程序員 比特幣當贖金,WannaRen 勒索病毒二度來襲!通過 Python 代碼實現時間序列數據的統計學預測模型 真香,朕在看了!總結
以上是生活随笔為你收集整理的小网站的容器化(下):网站容器化的各种姿势,先跟着撸一波代码再说!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 今天,我要教妹子学会Spring:Awa
- 下一篇: 首次落地中国大陆的OpenInfra:中