使用 docker 搭建 web 服務環境

本文目的php

作過開發的人對開發環境的安裝、配置應該都不會太陌生,無論你作什麼開發,對開發環境都會具備必定的依賴性的。對於 PHP 的 Web 開發來講,開發環境至少要有一個 Web 服務器(如 Apache、Nginx)、一個數據庫服務器(如 MySQL)和一個 PHP 解析器吧,若是你的 PHP 代碼使用的一些擴展,那你還須要給你的 PHP 安裝上這些擴展,那樣你的 PHP 代碼纔可以順利地跑起來。對於一個只想靜靜地敲代碼的開發人員來講,開發環境的安裝與配置這種事情,只要經歷一次就已經很折騰人了。但是,事情每每不能按人們的意願進行的,你保不許會重裝下系統,也保不許會換一個新的環境。總之就是,你會偶爾須要從新安裝配置你的的開發環境!html

你能夠回想一下,上一次安裝配置你的開發環境花費了多少時間,你所須要的 PHP 擴展是否是到運行時報錯了才記起來沒安裝的呢?還好,自從有了 Docker 以後,媽媽不再用擔憂個人開發環境的問題了。使用 Docker ,開發環境只須要安裝配置一次,以後搭建相同的開發環境很簡單,只須要一條命令便可完成!mysql

這就是本文的目的,介紹 Docker 下安裝配置 Web 的服務環境,實現一次安裝配置,屢次重用、跨平臺重用的功能。nginx

Docker 概述sql

Docker 是什麼?能夠將 Docker 理解爲打包環境的容器,它能夠將環境打包成鏡像,在須要的時候,再基於該鏡像來建立容器,這樣所須要的環境就回來了。剛剛提到了 Docker 的兩大核心概念,鏡像和容器。docker

Docker鏡像是爲了知足特殊用途而按照Docker的規則製做的應用,有點兒相似於Win-dows裏面的安裝軟件包。容器都是基於鏡像而建立的,基於一個鏡像能夠建立若干個名字不一樣但功能相同的容器。鏡像是靜態的,容器是動態的。數據庫

除了鏡像和容器以外,還有兩個概念須要瞭解一下的,那就是倉庫和 docker-compose。Docker 倉庫是存放鏡像的地方,咱們能夠從 Docker 倉庫中拉取鏡像到本地,而後再基於鏡像建立容器。docker-compose 是管理容器的。Docker 的思想是一個容器只作一件事情,一個開發環境中可能會使用到多個容器,好比 Web 服務環境會使用到 PHP 、Nginx、MySQL 等等。那麼一個 Web 服務環境就須要有三個容器,而且這些容器之間是存在依賴關係的,Nginx 依賴 PHP,PHP 依賴 MySQL。有了 docker-compose 就能夠很好地管理這些容器了,它能夠根據容器之間的依賴關係來決定每一個容器的啓動順序和關閉順序,能夠管理各容器與宿主機器之間的端口映射關係,也能夠配置容器與宿主機器之間的數據共享策略等等。服務器

國內的鏡像倉庫微服務

因爲地理位置的緣由,國內訪問 Docker 的官方倉庫是比較慢的,因此在這裏介紹一個國內的 Docker 倉庫:靈雀雲。靈雀雲鏡像倉庫中聚集了大量來自社區的優質做品,讓用戶組合、複用容器化微服務,輕鬆搭建新一代雲端應用。code

搭建 Web 服務環境

本文的重點是使用 Docker 搭建一套 Web 服務環境,若是在你的環境中尚未安裝 Docker,能夠參考這裏自行安裝。

安裝了 Docker 以後,搭建 Web 服務環境就很簡單了,只須要一個文件,一條命令便可!

一個文件: 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"
上面的文件內容很簡單,它定義了三個容器,分別是 nginx、mysql 和 phpfpm 。每一個容器定義裏包含了一些信息,這裏簡單介紹一下。

image:這個字段表示該容器是基於那個鏡像來建立的
links:表示在該容器內部須要訪問那個其它的容器,該名字在容器內部的表現相似於域名,它會綁 定對應容器的 IP
ports:將容器內部的端口映射到宿主機器中
volumes:配置容器與宿主機器的共享文件或者目錄

一條命令

有了上面的 docker-compose.yml 文件以後,只須要一條命令便可啓動全部的容器,也就是搭建好了整個 Web 服務環境了!

docker-compose up -d

最後

有了 Docker 以後,搭建環境從未有過如此簡單。

本文只是介紹了 Docker 的最基本的應用而已,它還不少用途而不只限於本文。它能夠實現多種版本的軟件並存同時工做,好比,我能夠在一個電腦上同時使用 PHP7 和 PHP5 而不會形成混淆。固然,還有其它的 …

相關文章
相關標籤/搜索