DOCKER PHP+NGINX

臨近國慶,又回過頭來鼓搗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

這樣能夠看到在容器運行期件報出的一些問題,好比擴展加載失敗等。

推薦:
https://docs.docker.com/

相關文章
相關標籤/搜索