LNMP Docker 配置(持續更新 2017-11-21)

原文連接:https://www.khs1994.com/docke...php

目標:一條命令創建 LNMP 環境(MySQL、Redis、PHP-fpm、Nginx,etc)。這裏只簡單列舉單容器運行方式,實際請使用 Docker Composehtml

GitHub:https://github.com/khs1994-do...mysql

GitHub:https://github.com/khs1994-do...nginx

修訂說明

  • 官方建議再也不使用 --link,而是使用 Docker 容器網絡來鏈接容器(服務,也即容器互通)。
  • 官方建議再也不使用 -v 或者 --volume,而是使用 --mount Docker 17.06+

準備

$ git clone --depth=1 https://github.com/khs1994-docker/lnmp-quickstart

$ cd lnmp-quickstart

建立網絡

$ docker network ls

$ docker network create -d bridge lnmp

建立 Volume

$ docker volume ls

$ docker volume create lnmp-mysql-data

MySQL

環境變量含義請到這裏查看:https://github.com/docker-lib...git

$ docker run -dit \
   --network lnmp \
   --name mysql \
   -p 3306:3306 \
   # 若只容許本地登陸,能夠加上監聽的 IP,默認監聽所有 IP
   # –p 127.0.0.1:3306:3306 \
   # 設置 root 密碼  
   -e MYSQL_ROOT_PASSWORD=mytest \
   # 啓動時新建一個數據庫
   -e MYSQL_DATABASE=test \
   # -v lnmp-mysql-data:/var/lib/mysql \
   --mount source=lnmp-mysql-data,target=/var/lib/mysql \
   mysql

Redis

$ docker run -dit \
    --network lnmp \
    --name redis \
    -p 6379:6379 \
    redis:alpine

PHP7

php-fpm 官方鏡像須要經過 Dockerfile 增長 PHP 擴展github

增長擴展

編輯 Dockerfile 增長 PHP 擴展redis

FROM php:fpm-alpine3.6

RUN docker-php-ext-install pdo_mysql

RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \
      && pecl install redis \
      && docker-php-ext-enable redis \
      && apk del .build-deps

注意: 安裝擴展可能須要依賴包,請使用 RUN apk add --no-cache PACKAGE_NAME 安裝依賴。sql

構建鏡像

$ docker build -t username/php:fpm-alpine3.6 .

運行容器

$ docker run -dit \
    --network lnmp \
    --name php7 \
    # -v $PWD/app:/app \
    --mount type=bind,source=$PWD/app,target=/app,readonly \
    username/php:fpm-alpine3.6

Nginx

$ docker run -dit \
    --network lnmp \
    -p 80:80 \
    -p 443:443 \
    --name nginx \
    # -v $PWD/app:/app \
    --mount type=bind,source=$PWD/app,target=/app,readonly \
    # -v $PWD/conf.d:/etc/nginx/conf.d \
    --mount type=bind,source=$PWD/conf.d,target=/etc/nginx/conf.d,readonly \
    nginx:alpine

測試 LNMP

$ docker ps -a

CONTAINER ID        IMAGE                         COMMAND                  CREATED              STATUS              PORTS                                      NAMES
e77477b89a65        nginx:alpine                  "nginx -g 'daemon of…"   3 seconds ago        Up 4 seconds        0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   nginx
e74dda1abdb8        username/php:fpm-alpine3.6    "docker-php-entrypoi…"   25 seconds ago       Up 26 seconds       9000/tcp                                   php7
55eb02c94a3a        redis:alpine                  "docker-entrypoint.s…"   46 seconds ago       Up 47 seconds       0.0.0.0:6379->6379/tcp                     redis
314d54410929        mysql                         "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:3306->3306/tcp                     mysql

訪問 127.0.0.1 看到 phpinfo 頁面。docker

訪問 127.0.0.1/redis.php 測試 PHP redis 擴展。數據庫

$ docker exec -it mysql mysql -uroot -pmytest

mysql> create database test;
Query OK, 1 row affected (0.00 sec)

訪問 127.0.0.1/pdo-mysql.php 測試 PHP pdo_mysql 擴展。

docker-compose

請訪問 khs1994-docker/lnmp 查看。

相關文章
相關標籤/搜索