原文連接:https://www.khs1994.com/docke...php
目標:一條命令創建 LNMP 環境(MySQL、Redis、PHP-fpm、Nginx,etc)。這裏只簡單列舉單容器運行方式,實際請使用 Docker Compose
。html
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
$ docker volume ls $ docker volume create lnmp-mysql-data
環境變量含義請到這裏查看: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
$ docker run -dit \ --network lnmp \ --name redis \ -p 6379:6379 \ redis:alpine
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
$ 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
$ 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
擴展。
請訪問 khs1994-docker/lnmp 查看。