臨近國慶,又回過頭來鼓搗docker,由於從事php開發,因此仍是先從環境入手。php
原本考慮搭建php+mysql+nginx+redis所有,可是因爲使用的都是公司的mysql和redis,故只搭建php+nginx,由於個人操做系統是win10,一下操做都是在win下完成的。html
首先先拉取鏡像,固然你也能夠本身編寫dockerfile去構建本身的鏡像。這裏先拉取nginx鏡像:mysql
docker pull nginx
這裏會默認拉取最新的鏡像,完成後可使用docker images查看已有鏡像。nginx
接下來安裝php,跟nginx鏡像同樣,能夠經過直接拉取鏡像完成操做,拉取的php鏡像只有部分擴展,本身須要的擴展須要進入容器裏面去安裝,官方給出了三種安裝php擴展的方法:redis
docker-php-ext-install pecl install name-xxx curl 源碼安裝
可是經過這種方式運行的php存在一個問題,那就是從新建立的鏡像或從新運行的容器,是沒有上次安裝好的擴展的,須要從新安裝,因此,這裏採用dockerfile構建本身的php鏡像。sql
先建立一個目錄,而後在這個目錄裏面建立dockerfile文件,文件內容以下:docker
FROM php:7.2-fpm AS php7.2 RUN docker-php-ext-install mysqli pdo pdo_mysql \ && pecl install redis-5.0.0 \ && pecl install yaf-3.0.8 \ && pecl install xdebug-2.7.2 \ && docker-php-ext-enable redis xdebug yaf \ && cd /usr/local/etc/php \ && touch php.ini
而後在當前目錄打開cmd,執行:ubuntu
docker build -t php7.2 .
而後就會開始構建本身的php鏡像,上述dockerfile比較簡單,只是在php:7.2-fpm鏡像的基礎上,使用docker-php-ext-install、pecl安裝了mysqli,pdo,redis,yaf,xdebug擴展,並建立了一個php.ini文件,用於後面掛載本地php.ini文件。php7
dockerfile還能夠執行更復雜的操做,咱們能夠在ubuntu鏡像裏面經過RUN去執行終端命令安裝php和nginx,並運行nginx、php-fpm服務,這樣就能夠在一個鏡像裏面同時安裝php+nginx,可是這裏只進行最簡單的php鏡像構建。app
等一切完成以後,咱們如今就有兩個鏡像
如今咱們須要作的就是啓動這兩個鏡像,並將本地的工做目錄和配置文件掛載到容器對應的目錄,可是,每次都要分別啓動兩個鏡像並掛載相應的文件,屬實比較麻煩,而且每次的ip還會變化致使須要更改nginx配置,這樣還不如直接安裝集成環境呢。。。
所以,這裏採用docker-compose去啓動這兩傢伙:
version: '2' services: nginx: container_name: "nginx" image: nginx ports: - "80:80" depends_on: - php volumes: - "F:/phpstudy/PHPTutorial/nginx/conf.d:/etc/nginx/conf.d" - "F:/phpstudy/PHPTutorial/WWW:/usr/www/html" - "F:/logs/error.log:/var/log/nginx/error.log" - "F:/logs/access.log:/var/log/nginx/access.log" networks: - app_net php: image: php7.2:latest ports: - "9000:9000" volumes: - "F:/phpstudy/PHPTutorial/WWW:/var/www/html" - "F:/lnmp/php.ini:/usr/local/etc/php/php.ini" networks: - app_net container_name: "php" networks: app_net: ipam: driver: default config: - subnet: 10.10.0.0/16
上面就是咱們的docker-compose.yml文件,經過該文件和docker-compose命令能夠快速部署分佈式應用,這個文件一樣放在剛纔的dockerfile目錄內,該文件裏面指定了須要掛載的文件,以及映射的端口,這樣就不須要每次都去手動輸入,執行命令:
docker-compose up -d
該命令會在執行完畢後進入後臺,這裏建議第一次安裝末尾不要-d:
docker-compose up
這樣能夠看到在容器運行期件報出的一些問題,好比擴展加載失敗等。