利用docker搭建web服務(wù)環(huán)境的方法步驟
前言
做過開發(fā)的人對(duì)開發(fā)環(huán)境的安裝、配置應(yīng)該都不會(huì)太陌生,不管你做什么開發(fā),對(duì)開發(fā)環(huán)境都會(huì)具有一定的依賴性的。對(duì)于 PHP 的 Web 開發(fā)來說,開發(fā)環(huán)境至少要有一個(gè) Web 服務(wù)器(如 Apache、Nginx)、一個(gè)數(shù)據(jù)庫服務(wù)器(如 MySQL)和一個(gè) PHP 解析器吧,如果你的 PHP 代碼使用的一些擴(kuò)展,那你還需要給你的 PHP 安裝上這些擴(kuò)展,那樣你的 PHP 代碼才能夠順利地跑起來。對(duì)于一個(gè)只想靜靜地敲代碼的開發(fā)人員來說,開發(fā)環(huán)境的安裝與配置這種事情,只要經(jīng)歷一次就已經(jīng)很折騰人了??墒牵虑橥荒馨慈藗兊囊庠高M(jìn)行的,你保不準(zhǔn)會(huì)重裝下系統(tǒng),也保不準(zhǔn)會(huì)換一個(gè)新的環(huán)境??傊褪?,你會(huì)偶爾需要重新安裝配置你的的開發(fā)環(huán)境!
你可以回想一下,上一次安裝配置你的開發(fā)環(huán)境花費(fèi)了多少時(shí)間,你所需要的 PHP 擴(kuò)展是不是到運(yùn)行時(shí)報(bào)錯(cuò)了才記起來沒安裝的呢?還好,自從有了 Docker 之后,媽媽再也不用擔(dān)心我的開發(fā)環(huán)境的問題了。使用 Docker ,開發(fā)環(huán)境只需要安裝配置一次,之后搭建相同的開發(fā)環(huán)境很簡單,只需要一條命令即可完成!
這就是本文的目的,介紹 Docker 下安裝配置 Web 的服務(wù)環(huán)境,實(shí)現(xiàn)一次安裝配置,多次重用、跨平臺(tái)重用的功能。
Docker 概述
Docker 是什么?可以將 Docker 理解為打包環(huán)境的容器,它可以將環(huán)境打包成鏡像,在需要的時(shí)候,再基于該鏡像來創(chuàng)建容器,這樣所需要的環(huán)境就回來了。剛剛提到了 Docker 的兩大核心概念,鏡像和容器。
Docker鏡像是為了滿足特殊用途而按照Docker的規(guī)則制作的應(yīng)用,有點(diǎn)兒類似于Win-dows里面的安裝軟件包。容器都是基于鏡像而創(chuàng)建的,基于一個(gè)鏡像可以創(chuàng)建若干個(gè)名字不同但功能相同的容器。鏡像是靜態(tài)的,容器是動(dòng)態(tài)的。
除了鏡像和容器之外,還有兩個(gè)概念需要了解一下的,那就是倉庫和 docker-compose。Docker 倉庫是存放鏡像的地方,我們可以從 Docker 倉庫中拉取鏡像到本地,然后再基于鏡像創(chuàng)建容器。docker-compose 是管理容器的。Docker 的思想是一個(gè)容器只做一件事情,一個(gè)開發(fā)環(huán)境中可能會(huì)使用到多個(gè)容器,比如 Web 服務(wù)環(huán)境會(huì)使用到 PHP 、Nginx、MySQL 等等。那么一個(gè) Web 服務(wù)環(huán)境就需要有三個(gè)容器,并且這些容器之間是存在依賴關(guān)系的,Nginx 依賴 PHP,PHP 依賴 MySQL。有了 docker-compose 就可以很好地管理這些容器了,它可以根據(jù)容器之間的依賴關(guān)系來決定每個(gè)容器的啟動(dòng)順序和關(guān)閉順序,可以管理各容器與宿主機(jī)器之間的端口映射關(guān)系,也可以配置容器與宿主機(jī)器之間的數(shù)據(jù)共享策略等等。
國內(nèi)的鏡像倉庫
由于地理位置的原因,國內(nèi)訪問 Docker 的官方倉庫是比較慢的,所以在這里介紹一個(gè)國內(nèi)的 Docker 倉庫:靈雀云。靈雀云鏡像倉庫中匯集了大量來自社區(qū)的優(yōu)質(zhì)作品,讓用戶組合、復(fù)用容器化微服務(wù),輕松搭建新一代云端應(yīng)用。
搭建 Web 服務(wù)環(huán)境
本文的重點(diǎn)是使用 Docker 搭建一套 Web 服務(wù)環(huán)境,如果在你的環(huán)境中還沒有安裝 Docker,可以參考這里自行安裝。
安裝了 Docker 之后,搭建 Web 服務(wù)環(huán)境就很簡單了,只需要一個(gè)文件,一條命令即可!
一個(gè)文件: docker-compose.yml
nginx: image: index.alauda.cn/library/nginx links: - phpfpm ports: - "80:80" - "443:443" volumes: - /Users/chenishr/www:/usr/share/nginx/html - ./nginx.conf:/etc/nginx/nginx.conf - ./nginx.d:/etc/nginx/conf.d mysql: image: index.alauda.cn/library/mysql environment: MYSQL_ROOT_PASSWORD: qazasdedc123 ports: - "3306:3306" phpfpm: image: index.alauda.cn/library/php:7.0-fpm links: - mysql volumes: - /Users/chenishr/www:/var/www/html ports: - "9000:9000"
上面的文件內(nèi)容很簡單,它定義了三個(gè)容器,分別是 nginx、mysql 和 phpfpm 。每個(gè)容器定義里包含了一些信息,這里簡單介紹一下。
- image:這個(gè)字段表示該容器是基于那個(gè)鏡像來創(chuàng)建的
- links:表示在該容器內(nèi)部需要訪問那個(gè)其它的容器,該名字在容器內(nèi)部的表現(xiàn)類似于域名,它會(huì)綁 定對(duì)應(yīng)容器的 IP
- ports:將容器內(nèi)部的端口映射到宿主機(jī)器中
- volumes:配置容器與宿主機(jī)器的共享文件或者目錄
一條命令
有了上面的 docker-compose.yml 文件之后,只需要一條命令即可啟動(dòng)所有的容器,也就是搭建好了整個(gè) Web 服務(wù)環(huán)境了!
docker-compose up -d
最后
有了 Docker 之后,搭建環(huán)境從未有過如此簡單。
本文只是介紹了 Docker 的最基本的應(yīng)用而已,它還很多用途而不僅限于本文。它可以實(shí)現(xiàn)多種版本的軟件并存同時(shí)工作,比如,我可以在一個(gè)電腦上同時(shí)使用 PHP7 和 PHP5 而不會(huì)造成混淆。當(dāng)然,還有其它的 …
好了,以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Docker-compose一鍵部署gitlab中文版的方法步驟
這篇文章主要介紹了Docker-compose一鍵部署gitlab中文版的方法步驟,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12使用Docker開發(fā)python Web 應(yīng)用
本文給大家詳細(xì)講解了如何使用Docker開發(fā)python應(yīng)用,特別是WEB應(yīng)用的步驟,Docker本質(zhì)上提供了非常輕量化的VMs,我們可以使用其創(chuàng)建一個(gè)高標(biāo)準(zhǔn)隔離并能大大減少失配的開發(fā)和產(chǎn)品環(huán)境。2016-10-10Docker手動(dòng)構(gòu)建JDK鏡像的實(shí)現(xiàn)示例
本文主要介紹了 Docker手動(dòng)構(gòu)建JDK鏡像的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-08-08Docker安裝Redis并使用Another?Redis?Desktop?Manager連接的方法
Redis?是一個(gè)使用C語言編寫的、開源的(遵守?BSD?協(xié)議)、高性能的、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value的NoSQL數(shù)據(jù)庫,這篇文章主要介紹了Docker安裝Redis并使用Another?Redis?Desktop?Manager連接,需要的朋友可以參考下2022-09-09