日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Nginx >内容正文

Nginx

Web服务(Apache、Nginx、Tomcat、Jetty)与应用(LAMP、CMS-WordPressGhost、Jenkins、Gitlab)

發(fā)布時間:2024/4/14 Nginx 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Web服务(Apache、Nginx、Tomcat、Jetty)与应用(LAMP、CMS-WordPressGhost、Jenkins、Gitlab) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Web服務(wù)和應(yīng)用是目前信息技術(shù)領(lǐng)域的熱門技術(shù)。如何使用Docker來運(yùn)行常見的Web服務(wù)器(包括Apache、Nginx、Tomcat等),以及一些常用應(yīng)用(LAMP、CMS等)。包括具體的鏡像構(gòu)建方法與使用步驟。

兩種創(chuàng)建鏡像的過程。其中一些操作比較簡單的鏡像使用Dockerfile來創(chuàng)建,而像Weblogic這樣復(fù)雜的應(yīng)用,則使用commit方式來創(chuàng)建。

Apache

Apache是一個高穩(wěn)定性的、商業(yè)級別的開源Web服務(wù)器。目前Apache已經(jīng)是世界使用排名第一的Web服務(wù)器軟件。由于其良好的跨平臺和安全性,Apache被廣泛應(yīng)用在多種平臺和操作系統(tǒng)上。作為Apache軟件基金會支持的項目,它的開發(fā)者社區(qū)完善而高效。自1995年發(fā)布至今,一直以高標(biāo)準(zhǔn)進(jìn)行維護(hù)與開發(fā)。Apache名稱源自美國的西南部一個印第安人部落:阿帕奇族,它支持類UNIX和Windows系統(tǒng)。

1.使用官方鏡像

官方提供了名為httpd的Apache鏡像,可以作為基礎(chǔ)Web服務(wù)鏡像。

編寫Dockerfile文件,內(nèi)容如下:

FROM httpd:2.4 COPY ./public-html /usr/local/apache2/htdocs/

創(chuàng)建項目目錄public-html,并在此目錄下創(chuàng)建index.html文件:Hello, Docker!

構(gòu)建自定義鏡像:$ docker build -t apache2-image .

構(gòu)建完成后,使用docker run指令運(yùn)行鏡像:$ docker run -it --rm --name apache-container -p 80:80 apache2-image

通過本地的80端口即可訪問靜態(tài)頁面。

也可以不創(chuàng)建自定義鏡像,直接通過映射目錄方式運(yùn)行Apache容器:

$ docker run -it --rm --name my-apache-app -p 80:80 -v?"$PWD":/usr/local/apache2/htdocs/ httpd:2.4

再次打開瀏覽器,可以再次看到頁面輸出。

2.使用自定義鏡像

首先,創(chuàng)建一個apache_ubuntu工作目錄,在其中創(chuàng)建Dockerfile文件、run.sh文件和sample目錄:

$?mkdir?apache_ubuntu && cd apache_ubuntu

$ touch Dockerfile run.sh

$?mkdir?sample

下面是Dockerfile的內(nèi)容和各個部分的說明:

#設(shè)置繼承自用戶創(chuàng)建的sshd鏡像

FROM sshd:Dockerfile

#創(chuàng)建者的基本信息

MAINTAINER docker_user (user@docker.com)

#設(shè)置環(huán)境變量,所有操作都是非交互式的

ENV DEBIAN_FRONTEND noninteractive

#安裝

RUN apt-get -yq install apache2&&\

rm -rf /var/lib/apt/lists/*

RUN?echo?"Asia/Shanghai"?> /etc/timezone && \

dpkg-reconfigure -f noninteractive tzdata

#注意這里要更改系統(tǒng)的時區(qū)設(shè)置,因為在web應(yīng)用中經(jīng)常會用到時區(qū)這個系統(tǒng)變量,默認(rèn)的ubuntu會讓你的應(yīng)用程序發(fā)生不可思議的效果

#添加用戶的腳本,并設(shè)置權(quán)限,這會覆蓋之前放在這個位置的腳本

ADD run.sh /run.sh

RUN?chmod?755 /*.sh

#添加一個示例的web站點(diǎn),刪掉默認(rèn)安裝在apache文件夾下面的文件,并將用戶添加的示例用軟鏈接,鏈到/var/www/html目錄下面

RUN?mkdir?-p /var/lock/apache2 &&?mkdir?-p /app && rm -fr /var/www/html && ln -s?/app /var/www/html?

COPY?sample/ /app

#設(shè)置apache相關(guān)的一些變量,在容器啟動的時候可以使用-e參數(shù)替代

ENV APACHE_RUN_USER www-data

ENV APACHE_RUN_GROUP www-data

ENV APACHE_LOG_DIR /var/log/apache2

ENV APACHE_PID_FILE /var/run/apache2.pid

ENV APACHE_RUN_DIR /var/run/apache2

ENV APACHE_LOCK_DIR /var/lock/apache2

ENV APACHE_SERVERADMIN admin@localhost

ENV APACHE_SERVERNAME localhost

ENV APACHE_SERVERALIAS docker.localhost

ENV APACHE_DOCUMENTROOT /var/www

EXPOSE 80

WORKDIR /app

CMD ["/run.sh"]

此sample站點(diǎn)的內(nèi)容為輸出Hello Docker!。然后在sample目錄下創(chuàng)建index.html文件,內(nèi)容如下:Hello, Docker!

run.sh腳本內(nèi)容也很簡單,只是啟動apache服務(wù):

$ cat run.sh

#!/bin/bash exec apache2 -D FOREGROUND

下面,用戶開始創(chuàng)建apache:ubuntu鏡像:

使用docker build命令創(chuàng)建apache:ubuntu鏡像,注意命令最后的“.”。

$ docker build -t apache:ubuntu .

下面開始使用docker run指令測試鏡像??梢允褂?P參數(shù)映射需要開放的端口(22和80端口):

$ docker run -d -P apache:ubuntu

64681e2ae943f18eae9f599dbc43b5f44d9090bdca3d8af641d7b371c124acfd

$ docker ps -a

CONTAINER ID??????? IMAGE??????????? COMMAND ? ? CREATED ? ? STATUS ? PORTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?NAMES

64681e2ae943 ? ? ? ?apache:ubuntu "/run.sh" ? ? ? 2 seconds ? ?Up 1 ? ? ? 0.0.0.0:49171->22/tcp, 0.0.0.0:49172->80/tcp ? ?naughty_poincare

在本地主機(jī)上用curl抓取網(wǎng)頁來驗證剛才創(chuàng)建的sample站點(diǎn):

$ curl 127.0.0.1:49172

Hello Docker!

也可以在其他設(shè)備上通過訪問宿主主機(jī)ip:49172來訪問sample站點(diǎn)。

在apache鏡像的Dockerfile中只用EXPOSE定義了對外開放的80端口,而在docker ps -a命令的返回中,卻看到新啟動的容器映射了兩個端口:22和80。

重要:但是實際上,當(dāng)嘗試使用SSH登錄到容器時,會發(fā)現(xiàn)無法登錄。這是因為在run.sh腳本中并未啟動SSH服務(wù)。這說明在使用Dockerfile創(chuàng)建鏡像時,會繼承父鏡像的開放端口,但卻不會繼承啟動命令

因此,需要在run.sh腳本中添加啟動sshd的服務(wù)的命令:

$ cat run.sh

#!/bin/bash /usr/sbin/sshd & exec apache2 -D FOREGROUND

再次創(chuàng)建鏡像:

$ docker build -t apache:ubuntu .

這次創(chuàng)建的鏡像,將默認(rèn)會同時啟動SSH和Apache服務(wù)。

來看看如何映射本地目錄??梢酝ㄟ^映射本地目錄的方式,來指定容器內(nèi)Apache服務(wù)響應(yīng)的內(nèi)容,例如映射本地主機(jī)上當(dāng)前目錄下的www目錄到容器內(nèi)的/var/www目錄:

$ docker run -i -d -p 80:80 -p 103:22 -e APACHE_SERVERNAME=test? -v `pwd`/www:/var/www:ro apache:ubuntu

在當(dāng)前目錄內(nèi)創(chuàng)建www目錄,并放上自定義的頁面index.html。

在本地主機(jī)上可訪問測試容器提供的Web服務(wù),查看獲取內(nèi)容為新配置的index.html頁面信息。

Nginx

Nginx是一款功能強(qiáng)大的開源反向代理服務(wù)器,支持HTTP、HTTPS、SMTP、POP3、IMAP等協(xié)議。它也可以作為負(fù)載均衡器、HTTP緩存或Web服務(wù)器。Nginx一開始就專注于高并發(fā)和高性能的應(yīng)用場景。它使用類BSD開源協(xié)議,支持Linux、BSD、Mac、Solaris、AIX等類Unix系統(tǒng),同時也有Windows上的移植版本。

1.使用官方鏡像

用戶可以使用docker run指令直接運(yùn)行官方Nginx鏡像:

$ docker run -d -p 80:80 --name webserver nginx

34bcd01998a76f67b1b9e6abe5b7db5e685af325d6fafb1acd0ce84e81e71e5d

然后使用docker ps指令查看當(dāng)前運(yùn)行的docker ps指令查看當(dāng)前運(yùn)行的容器:

$ docker ps

CONTAINER ID IMAGE COMMAND???? CREATED? STATUS PORTS??????????????????????? NAMES

34bcd01998a7 nginx "nginx..." ?2min ago Up ? ? 0.0.0.0:80->80/tcp, 443/tcp ?webserver

目前Nginx容器已經(jīng)在0.0.0.0:80啟動,并映射了80端口,此時可以打開瀏覽器訪問此地址,就可以看到Nginx輸出的頁面。

2.自定義Web頁面

同樣的,創(chuàng)建index.html文件,并將index.html文件掛載至容器中,即可看到顯示自定義的頁面。

$ docker run --name nginx-container -p 80:80 -v index.html:/usr/share/nginx/html:ro -d nginx

另外,也可以使用Dockerfile來構(gòu)建新鏡像。Dockerfile內(nèi)容如下:

FROM nginx COPY ./index.html /usr/share/nginx/html

開始構(gòu)建鏡像my-nginx:

$ docker build -t my-nginx .

構(gòu)建成功后執(zhí)行docker run指令:

$ docker run --name nginx-container -d my-nginx

Tomcat

Tomcat是由Apache軟件基金會下屬的Jakarta項目開發(fā)的一個Servlet容器,按照Sun Microsystems提供的技術(shù)規(guī)范,實現(xiàn)了對Servlet和Java Server Page(JSP)的支持。同時,它提供了作為Web服務(wù)器的一些特有功能,如Tomcat管理和控制平臺、安全域管理和Tomcat閥等。由于Tomcat本身也內(nèi)含了一個HTTP服務(wù)器,也可以當(dāng)作一個單獨(dú)的Web服務(wù)器來使用。

首先,嘗試在Docker Hub上搜索已有的Tomcat相關(guān)鏡像的個數(shù):

$ docker search tomcat |wc -l?

285

可以看到,已經(jīng)有285個相關(guān)鏡像。如是個人開發(fā)或測試,可以隨意選擇一個鏡像,按照提示啟動應(yīng)用即可。

下面以Tomcat 7.0為例介紹定制Tomcat鏡像的步驟:

1.準(zhǔn)備工作

創(chuàng)建tomcat7.0_jdk1.6文件夾,從www.oracle.com網(wǎng)站上下載sun_jdk 1.6壓縮包,解壓為jdk目錄。

創(chuàng)建Dockerfile和run.sh文件:

$?mkdir?tomcat7.0_jdk1.6

$ cd tomcat7.0_jdk1.6/

$ touch Dockerfile run.sh

下載Tomcat,可以到官方網(wǎng)站下載最新的版本,也可以直接使用下面鏈接中給出的版本:

$ wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.56/bin/apache-tomcat-7.0.56.zip

$ ls

Dockerfile? apache-tomcat-7.0.56?? jdk? run.sh

2.Dockerfile文件和其他腳本文件

Dockerfile文件內(nèi)容如下:

#設(shè)置繼承自用戶創(chuàng)建的sshd鏡像

FROM sshd:Dockerfile

#下面是一些創(chuàng)建者的基本信息

MAINTAINER docker_user (user@docker.com)

#設(shè)置環(huán)境變量,所有操作都是非交互式的

ENV DEBIAN_FRONTEND noninteractive

#注意這里要更改系統(tǒng)的時區(qū)設(shè)置

RUN?echo?"Asia/Shanghai"?> /etc/timezone && \

dpkg-reconfigure -f noninteractive tzdata

#安裝跟tomcat用戶認(rèn)證相關(guān)的軟件

RUN apt-get install -yq --no-install-recommends wget pwgen ca-certificates && \

apt-get clean && \

rm -rf /var/lib/apt/lists/*

#設(shè)置tomcat的環(huán)境變量,若讀者有其他的環(huán)境變量需要設(shè)置,也可以在這里添加。

ENV CATALINA_HOME /tomcat

ENV JAVA_HOME /jdk

#復(fù)制tomcat和jdk文件到鏡像中

ADD apache-tomcat-7.0.56 /tomcat

ADD jdk /jdk

ADD create_tomcat_admin_user.sh /create_tomcat_admin_user.sh

ADD run.sh /run.sh

RUN?chmod?+x /*.sh

RUN?chmod?+x /tomcat/bin/*.sh

EXPOSE 8080

CMD ["/run.sh"]

創(chuàng)建tomcat用戶和密碼腳本文件create_tomcat_admin_user.sh文件,內(nèi)容為:

#!/bin/bash if [ -f /.tomcat_admin_created ]; then echo "Tomcat 'admin' user already created" exit 0 fi #generate password PASS=${TOMCAT_PASS:-$(pwgen -s 12 1)} _word=$( [ ${TOMCAT_PASS} ] && echo "preset" || echo "random" ) echo "=> Creating and admin user with a ${_word} password in Tomcat" sed -i -r 's/<\/tomcat-users>//' ${CATALINA_HOME}/conf/tomcat-users.xml echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml echo " script,manager-jmx,admin-gui, admin-script\"/>" >> ${CATALINA_HOME}/conf/ tomcat-users.xml echo '' >> ${CATALINA_HOME}/conf/tomcat-users.xml echo "=> Done!" touch /.tomcat_admin_created echo "========================================================================" echo "You can now configure to this Tomcat server using:" echo "" echo " admin:${PASS}" echo "" echo "========================================================================"

編寫run.sh腳本文件,內(nèi)容為:

#!/bin/bashif [ ! -f /.tomcat_admin_created ]; then /create_tomcat_admin_user.sh fi /usr/sbin/sshd -D & exec ${CATALINA_HOME}/bin/catalina.sh run

3.創(chuàng)建和測試鏡像

通過下面的命令創(chuàng)建鏡像tomcat7.0:jdk1.6

$ docker build -t tomcat7.0:jdk1.6 .

啟動一個tomcat容器進(jìn)行測試:

$ docker run -d -P tomcat7.0:jdk1.6

3cd4238cb32a713a3a1c29d93fbfc80cba150653b5eb8bd7629bee957e7378ed

通過docker logs得到tomcat的密碼aBwN0CNCPckw:

$ docker logs 3cd

=> Creating and admin user with a random password in Tomcat => Done! ======================================================================= You can now configure to this Tomcat server using: admin:aBwN0CNCPckw

查看映射的端口信息:

$ docker ps

CONTAINER ID ? IMAGE ? ? ? ? ? ? ? ?COMMAND ?CREATED ?STATUS????????????? PORTS ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? NAMES

3cd4238cb32a ? ?tomcat7.0:jdk1.6 "/run.sh" ? 4 seconds ?Up 3 seconds ? ? ?0.0.0.0:49157->22/tcp, 0.0.0.0:49158->8080/tcp ??cranky_wright

在本地使用瀏覽器登錄Tomcat管理界面,訪問本地的49158端口,即http://127.0.0.1:49158。(22端口是ssh的)

輸入從docker logs中得到的密碼,成功進(jìn)入管理界面。

在實際環(huán)境中,可以通過使用-v參數(shù)來掛載Tomcat的日志文件、程序所在目錄、以及與Tomcat相關(guān)的配置。

Jetty

Jetty是一個優(yōu)秀的開源Servlet容器,以其高效、小巧、可嵌入式等優(yōu)點(diǎn)深得人心,它為基于Java的Web內(nèi)容(如JSP和Servlet)提供運(yùn)行環(huán)境。Jetty基于Java語言編寫,它的API以一組JAR包的形式發(fā)布。開發(fā)人員可以將Jetty容器實例化成一個對象,可以迅速為一些獨(dú)立運(yùn)行的Java應(yīng)用提供Web服務(wù)。相對老牌的Tomcat,Jetty架構(gòu)更合理,性能更優(yōu)。尤其在啟動速度上,讓Tomcat望塵莫及。Jetty目前在國內(nèi)外互聯(lián)網(wǎng)企業(yè)中應(yīng)用廣泛。

DockerHub官方提供了Jetty鏡像,直接運(yùn)行docker run指令即可:

$ docker run -d jetty

使用docker ps指令查看正在運(yùn)行中的jetty容器:

$ docker ps

CONTAINER ID? IMAGE COMMAND??????????????? CREATED? STATUS? PORTS???? NAMES

f7f1d70f2773? jetty?"/docker-entrypoint.b"?x ago??? Up????? 8080/tcp? lonely_poitras

當(dāng)然,還可以使用-p參數(shù)映射運(yùn)行端口:

$ docker run -d -p 80:8080 -p 443:8443 jetty

7bc629845e8b953e02e31caaac24744232e21816dcf81568c029eb8750775733

使用宿主機(jī)的瀏覽器訪問container-ip:8080,即可獲得Jetty運(yùn)行頁面,由于當(dāng)前沒有內(nèi)容,會提示錯誤信息。

LAMP

LAMP(Linux-Apache-MySQL-PHP)是目前流行的Web工具棧,其中包括:Linux操作系統(tǒng),Apache網(wǎng)絡(luò)服務(wù)器,MySQL數(shù)據(jù)庫,Perl、PHP或者Python編程語言。其組成工具均是成熟的開源軟件,被大量網(wǎng)站所采用。和Java/J2EE架構(gòu)相比,LAMP具有Web資源豐富、輕量、快速開發(fā)等特點(diǎn);和微軟的.NET架構(gòu)相比,LAMP更具有通用、跨平臺、高性能、低價格的優(yōu)勢。因此LAMP無論是在性能、質(zhì)量還是價格方面都是企業(yè)搭建網(wǎng)站的首選平臺。

現(xiàn)在也有人用Nginx替換Apache,稱為LNMP或LEMP,但并不影響整個框架的選型原則,是彼此十分類似的技術(shù)棧。

可以使用自定義Dockerfile或者Compose方式運(yùn)行LAMP,同時社區(qū)也提供了十分成熟的linode/lamp和tutum/lamp鏡像。

下面介紹后兩種方法。

1.使用linode/lamp鏡像

首先,執(zhí)行docker run指令,直接運(yùn)行鏡像,并進(jìn)入容器內(nèi)部bash shell:

$ docker run -p 80:80 -t -i linode/lamp /bin/bash

root@e283cc3b2908:/#

在容器內(nèi)部shell啟動apache以及mysql服務(wù):

$ root@e283cc3b2908:/# service apache2 start

* Starting web server apache2

$ root@e283cc3b2908:/# service mysql start

* Starting MySQL database server mysqld???????????????????????????????? [ OK ]

* Checking?for?tables which need an upgrade, are corrupt?or?were not closed cleanly.

此時鏡像中apache、mysql服務(wù)已經(jīng)啟動,可使用docker ps指令查看運(yùn)行中的容器:

$ docker ps -aCONTAINER ID IMAGE?????? COMMAND???? CREATED? STATUS?????? PORTS

NAMESe283cc3b2908 linode/lamp?"/bin/bash"?x ago??? Up x seconds 0.0.0.0:80->80/tcp trusting_mestorf

此時通過瀏覽器訪問本地80端口即可看到默認(rèn)頁面。

2.使用tutum/lamp鏡像

首先,執(zhí)行docker run指令,直接運(yùn)行鏡像:

$ docker run -d -p 80:80 -p 3306:3306 tutum/lamp

容器啟動成功后,打開瀏覽器,訪問demo頁面。

CMS

內(nèi)容管理系統(tǒng)(Content Management System,CMS)指的是提供內(nèi)容編輯服務(wù)的平臺程序。CMS可以讓不懂編程的用戶方便又輕松地發(fā)布、更改和管理各類數(shù)字內(nèi)容(主要以文本和圖像為主)。以Wordpress和Ghost兩個流行的CMS軟件為例,介紹如何制作和使用對應(yīng)的Docker鏡像。

WordPress

WordPress是風(fēng)靡全球的開源內(nèi)容管理系統(tǒng),是博客、企業(yè)官網(wǎng)、產(chǎn)品首頁等內(nèi)容相關(guān)平臺的主流實現(xiàn)方案之一。類似項目還有Drupal、Joomla、Typo3等。

WordPress基于PHP和MySQL,架構(gòu)設(shè)計簡單明了,支持主題,插件和各種功能模塊。更重要的是,WordPress擁有龐大的社區(qū),在線資源非常豐富,并且在各大網(wǎng)絡(luò)空間商和云平臺中受到廣泛的支持。根據(jù)2013年8月的統(tǒng)計數(shù)據(jù),流量排名前一千萬的網(wǎng)站中其使用率高達(dá)22%。

1.使用官方鏡像

首先,通過Docker Hub下載官方wordpress鏡像:

$ docker pull wordpress

然后,就可以創(chuàng)建并運(yùn)行一個wordpress容器,并連接到mysql容器:

$ docker run --name some-wordpress --link some-mysql:mysql -d wordpress

同樣,用戶可以使用-p參數(shù)來進(jìn)行端口映射:

$ docker run --name some-wordpress --link some-mysql:mysql -p 8080:80 -d wordpress

啟動成功后,可在瀏覽器中訪問http://localhost:8080來打開WordPress頁面。

2.使用Compose搭建WordPress應(yīng)用

可以使用Compose來一鍵搭建WordPress應(yīng)用。

首先,新建docker-compose.yml文件:

wordpress: image: wordpress links: - db:mysql ports: - 8080:80 db: image: mariadb environment: MYSQL_ROOT_PASSWORD: example

然后執(zhí)行:

$ docker-compose up

如果提示沒有docker-compose命令,可以通過pip install docker-compose來在線安裝。

待服務(wù)啟動后,即可打開瀏覽器訪問本地8080端口打開WordPress配置界面。

Ghost

Ghost是一個廣受歡迎的開源博客平臺,使用JavaScript編寫,以MIT協(xié)議發(fā)布。它的設(shè)計非常簡約,使用起來體驗優(yōu)異,非常適合做內(nèi)容發(fā)布,故而受到很多極客或技術(shù)工作者的喜愛??梢灾苯邮褂肈ocker Hub提供的官方Ghost鏡像。

直接使用docker run指令運(yùn)行:

$ docker run --name ghost-container -d ghost

至此已經(jīng)成功啟動了一個Ghost容器,內(nèi)含Ghost實例并監(jiān)聽默認(rèn)的2368服務(wù)端口。

當(dāng)然可以對服務(wù)進(jìn)行端口映射,如下所示:

$ docker run --name ghost-container-1 -p 8080:2368 -d ghost

df116b7d570b3456950f4d7c22ff6911124427d16635080817e884922b491a2d

還可以掛載已有的內(nèi)容到Ghost容器內(nèi):

$ docker run --name some-ghost -v /path/to/ghost/blog:/var/lib/ghost ghost

持續(xù)開發(fā)與管理

信息行業(yè)日新月異,如何響應(yīng)不斷變化的需求,快速適應(yīng)和保證軟件的質(zhì)量?持續(xù)集成(Continuous integration,CI)正是針對這類問題的一種開發(fā)實踐,它倡導(dǎo)開發(fā)團(tuán)隊定期進(jìn)行集成驗證。集成通過自動化的構(gòu)建來完成,包括自動編譯、發(fā)布和測試,從而盡快地發(fā)現(xiàn)錯誤。CI所描述的軟件開發(fā)是從原始需求識別到最終產(chǎn)品部署整個過程中,需求以小批量形式在團(tuán)隊的各個角色間順暢流動,能夠以較短地周期完成需求的小粒度頻繁交付。整個過程中,需求分析、產(chǎn)品的用戶體驗和交互設(shè)計、開發(fā)、測試、運(yùn)維等角色需要密切協(xié)作。

持續(xù)集成特點(diǎn)包括:從檢出代碼、編譯構(gòu)建、運(yùn)行測試、結(jié)果記錄測試統(tǒng)計等都是自動完成的,減少人工干預(yù)。需要有持續(xù)集成系統(tǒng)的支持,包括代碼托管機(jī)制支持,以及集成服務(wù)器等。

持續(xù)交付(Continuous delivery,CD)則是經(jīng)典的敏捷軟件開發(fā)方法的自然延伸,它強(qiáng)調(diào)產(chǎn)品在修改后部署上線的流程要敏捷化、自動化。甚至一些較小的改變也要今早的部署上線,這跟傳統(tǒng)軟件在較大版本更新后才上線的思想不同。

Jenkins

Jenkins是一個得到廣泛應(yīng)用的持續(xù)集成和持續(xù)交付的工具。作為開源軟件項目,它旨在提供一個開放易用的持續(xù)集成平臺。Jenkins能實時監(jiān)控集成中存在的錯誤,提供詳細(xì)的日志文件和提醒功能,并用圖表的形式形象地展示項目構(gòu)建的趨勢和穩(wěn)定性。Jenkins特點(diǎn)包括安裝配置簡單、支持詳細(xì)的測試報表、分布式構(gòu)建等。

自2.0版本,Jenkis推出了Pipeline as Code,幫助Jenkins實現(xiàn)對CI和CD更好的支持。通過Pipeline,將原本獨(dú)立運(yùn)行的多個任務(wù)連接起來,可以實現(xiàn)十分復(fù)雜的發(fā)布流程。Jenkins官方在Docker Hub上提供了全功能的基于官方發(fā)布版的Docker鏡像。

可以方便地使用docker run指令一鍵部署Jenkins服務(wù),如下所示:

$ docker run -p 8080:8080 -p 50000:50000 jenkins

Jenkins容器啟動成功后,可以打開瀏覽器訪問8080端口,查看Jenkins管理界面。

目前運(yùn)行的容器中,數(shù)據(jù)會存儲在工作目錄/var/jenkins_home中,這包括Jenkins中所有的數(shù)據(jù),包括插件和配置信息等。

如果需要數(shù)據(jù)持久化,可以使用數(shù)據(jù)卷機(jī)制:

$ docker run -p 8080:8080 -p 50000:50000 -v /your/home:/var/jenkins_home jenkins

以上指令會將Jenkins數(shù)據(jù)存儲于宿主機(jī)的/your/home目錄(需要確保/your/home目錄對于容器內(nèi)的Jenkins用戶是可訪問的)下。

當(dāng)然也可以使用數(shù)據(jù)卷容器:

$ docker run --name myjenkins -p 8080:8080 -p 50000:50000 -v /var/jenkins_home jenkins

Gitlab

Gitlab是一款非常強(qiáng)大的開源源碼管理系統(tǒng)。它支持基于Git的源碼管理、代碼評審、issue跟蹤、活動管理、wiki頁面,持續(xù)集成和測試等功能。

基于Gitlab,用戶可以自己搭建一套類似Github的開發(fā)協(xié)同平臺。Gitlab官方提供了社區(qū)版本(Gitlab CE)的DockerHub鏡像。

可以直接使用docker run指令運(yùn)行:

$ docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --publish 23:23 \ --name gitlab \ --restart always \ --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest

dbae485d24492f656d2baf18526552353cd55aac662e32491046ed7fa033be3a

成功運(yùn)行鏡像后,可以打開瀏覽器,訪問Gitlab服務(wù)管理界面。

?

?

總結(jié)

以上是生活随笔為你收集整理的Web服务(Apache、Nginx、Tomcat、Jetty)与应用(LAMP、CMS-WordPressGhost、Jenkins、Gitlab)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。