LNMP Docker 安装配置

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

实际请使用 Docker Composehttps://github.com/khs1994-docker/lnmp

GitHub:https://github.com/khs1994-docker/lnmp-quickstart

修订说明

  • 官方建议不再使用 --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-library/docs/tree/master/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.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 安装依赖。

构建镜像

$ 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 页面。

访问 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 查看。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏快乐八哥

掌握Docker命令-Docker for Web Developers(4)

1.管理镜像命令 获取镜像 docker push ubuntu:14:04 查看镜像列表 docker images 重命名image docker tag ...

2017
来自专栏行者常至

将oracle驱动包加到maven中

2、确认maven环境变量已整确(cmd 中执行 mvn -v 显示maven的版本信息);

753
来自专栏Azura技术分享

MySQL自动备份脚本

1525
来自专栏搜云库

Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo

Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo

24911
来自专栏LuckQI

容器Docker学习系列八~rootfs命令学习

基础是一步一步的get到的。随着自己写基础知识,也发现了很多原先没有注意到的知识点。工作是我们把知识进行应用的地方,但是也不应该不能让工作把我们局限住。继续扩展...

611
来自专栏康怀帅的专栏

Docker Machine 使用详解

Automate container provisioning on your network or in the cloud. Available for W...

3954
来自专栏搜云库

Docker Compose 1.18.0 之服务编排详解

一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose,不再需要使用shell脚本来启动容器。在配置文件中,所有的容器通过serv...

34810
来自专栏搜云库

Docker 部署 SpringBoot 项目整合 Redis 镜像做访问计数Demo

Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo 最终效果如下 ? 大概就几个步骤 1.安装 Docker CE 2.运行 R...

3278
来自专栏CaiRui

Zabbix监控详解

Zabbix是什么 Zabbix 是由Alexei Vladishev创建,目前由Zabbix SIA在持续开发和支持。 Zabbix 是一个企业级的分布式开源...

1.1K8
来自专栏青枫的专栏

EditPlus最新汉化绿色版的下载、破解,以及开发java文件时的一些相关设置操作视频

  下载链接:https://pan.baidu.com/s/1jJUJzUm 密码:xlli

721

扫码关注云+社区