博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LNMP Docker 配置(持续更新 2017-11-21)
阅读量:6853 次
发布时间:2019-06-26

本文共 2865 字,大约阅读时间需要 9 分钟。

原文链接:

目标:一条命令建立 LNMP 环境(MySQL、Redis、PHP-fpm、Nginx,etc)。这里只简单列举单容器运行方式,实际请使用 Docker Compose

GitHub:

GitHub:

修订说明

  • 官方建议不再使用 --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

环境变量含义请到这里查看:

$ 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 扩展

增加扩展

编辑 Dockerfile 增加 PHP 扩展

FROM php:fpm-alpine3.6RUN docker-php-ext-install pdo_mysqlRUN 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 安装依赖。

构建镜像

$ 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 -aCONTAINER ID        IMAGE                         COMMAND                  CREATED              STATUS              PORTS                                      NAMESe77477b89a65        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   nginxe74dda1abdb8        username/php:fpm-alpine3.6    "docker-php-entrypoi…"   25 seconds ago       Up 26 seconds       9000/tcp                                   php755eb02c94a3a        redis:alpine                  "docker-entrypoint.s…"   46 seconds ago       Up 47 seconds       0.0.0.0:6379->6379/tcp                     redis314d54410929        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 页面。

访问 127.0.0.1/redis.php 测试 PHP redis 扩展。

$ docker exec -it mysql mysql -uroot -pmytestmysql> create database test;Query OK, 1 row affected (0.00 sec)

访问 127.0.0.1/pdo-mysql.php 测试 PHP pdo_mysql 扩展。

docker-compose

请访问 查看。

转载地址:http://ekfyl.baihongyu.com/

你可能感兴趣的文章
当下流行的UI框架
查看>>
Python从零开始系列连载(21)——Python特色数据类型(元组)(下)
查看>>
[掘金专题] Google I/O 2017 已经结束,我们该如何评价?
查看>>
【适合新手入门计算机行业】计算机科学速成课-中英双语全40集
查看>>
【iOS报错】“The operation couldn’t be completed (LaunchServicesError erro
查看>>
深入剖析Vue源码 - 选项合并(下)
查看>>
vue父、子、孙组件间数据传递、事件传递
查看>>
React 源码解析之总览
查看>>
Gulp
查看>>
Js数组方法解析
查看>>
Java比特币开发教程: 创建比特币钱包
查看>>
移动端技术路线
查看>>
如何阅读jdk源码?
查看>>
【Android进阶】RecyclerView之ItemDecoration(一)
查看>>
Vue-SSR: head Mixin 实现头部信息管理
查看>>
多线程笔记---线程间的协作方法(wait、notify、sleep、yield、join、interrupt、notifyAll)...
查看>>
Fragment新功能,setMaxLifecycle了解一下
查看>>
assign
查看>>
Flutter新人实战—从0开始开发一个DIY活动记录应用(一
查看>>
【排序】选择排序 Swift版本
查看>>