在朋友的强烈推荐下,走上了docker之路。经过了繁琐的docker环境安装,看了下镜像/容器的简单使用,开始进行nginx+php环境的搭建,本文记录一下在安装过程中的笔记。

原文地址:代码汇个人博客 http://www.codehui.net/info/56.html

测试环境:centos7.6,docker 18.09.1

首先要确保docker环境已经安装成功

[root@localhost ~]# docker --version
Docker version 18.09.2, build 6247962

Docker 安装 Nginx

  • 我们可以使用docker search nginx命令查找 Docker Hub 上的 nginx 镜像,这里直接拉取官方的镜像
[root@localhost ~]# docker pull nginx
  • 等待下载完成后,我们就可以在本地镜像列表里查到 REPOSITORYnginx 的镜像。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f09fe80eb0e7 6 days ago 109MB
  • 使用nginx镜像开启nginx应用容器
[root@localhost ~]# docker run -p 80:80 -d --name mynginx  -v /docker/www:/usr/share/nginx/www nginx
3218b3ad4e47018729b053ad834cf2665cf3af497b4a2ccccd758f792179e365
[root@localhost ~]#

-p 80:80:将容器的80端口映射到主机的80端口

-d 后台运行(守护进程)

--name mynginx:将容器命名为mynginx

-v 将主机中当前目录下的www挂载到容器的www目录

  • 查看容器启动情况
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3218b3ad4e47 nginx "nginx -g 'daemon off" 3 seconds ago Up 2 seconds 0.0.0.0:80->80/tcp mynginx
  • 通过浏览器访问,运行成功

Docker 安装 PHP

  • nginx一样,我们可以先通过docker search php查找镜像,这里直接拉取官方的镜像,标签为7.1-fpm,其他版本的可自行选择
[root@localhost ~]# docker pull php:7.1-fpm
  • 等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为php,标签为7.1-fpm的镜像。
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f09fe80eb0e7 6 days ago 109MB
php 7.1-fpm 7c5ccac5d47f 6 days ago 358MB
  • 使用php镜像开启php-frm应用容器
[root@localhost ~]# docker run -p 9000:9000 -d --name myphp-fpm -v /docker/www:/usr/share/nginx/www php:7.1-fpm
51adb2df6004cbfcd113f280c2c5497c83a9720d8b689316a3678b1a126d5129
[root@localhost ~]#

-p 9000:9000 :将容器的9000端口映射到主机的9000端口

-d 后台运行(守护进程)

--name myphp-fpm:将容器命名为myphp-fpm

-v 将主机中当前目录下的www挂载到容器的www目录

  • 查看容器启动情况
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
51adb2df6004 php:7.1-fpm "docker-php-entrypoif" 45 seconds ago Up 43 seconds 0.0.0.0:9000->9000/tcp myphp-fpm
3218b3ad4e47 nginx "nginx -g 'daemon off" 18 minutes ago Up 18 minutes 0.0.0.0:80->80/tcp mynginx

到这里,可以看到nginx和php都运行成功(STATUS为up说明正在运行)

  • 查看ip信息
[root@localhost ~]# docker inspect myphp-fpm | grep "IPAddress"
"SecondaryIPAddresses": null,
"IPAddress": "172.17.0.3",
"IPAddress": "172.17.0.3",
修改nginx相关配置

容器里面是没有vim,不能直接修改配置文件。当然我们也可以在容器里面安装vim,这里介绍另一种方法

  • 进入正在运行的nginx容器
[root@localhost ~]# docker exec -it mynginx bash
root@3218b3ad4e47:/#

配置文件地址 /etc/nginx/conf.d/default.conf

root@3218b3ad4e47:/# cd /etc/nginx/conf.d/
root@3218b3ad4e47:/etc/nginx/conf.d# ls
default.conf
root@3218b3ad4e47:/etc/nginx/conf.d#
  • 然后使用ctrl + p + q退出容器,使用exit的话会让容器停止。
  • 使用专用的复制命令将配置文件复制到宿主机,然后在宿主机进行编辑
[root@localhost docker]# docker cp mynginx:/etc/nginx/conf.d/default.conf ./default.conf
  • 在宿主机修改配置文件的php部分,内容如下:
location ~ \.php$ {
fastcgi_pass 172.17.0.3:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/share/nginx/www$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
include fastcgi_params;
}

其中的ip也可以修改为宿主机的ip或者上面docker命令查看的ip。

  • 然后使用复制命令将宿主机的文件复制到容器
[root@localhost docker]# docker cp ./default.conf mynginx:/etc/nginx/conf.d/default.conf
  • 进入容器中,重新载入nginx配置文件
[root@localhost docker]# docker exec -it mynginx bash
root@3218b3ad4e47:/# service nginx reload
[ ok ] Reloading nginx: nginx.
root@3218b3ad4e47:/#

大功告成

然后我们测试一下

[root@localhost www]# echo "<?php echo phpinfo();" > info.php

访问成功

上面这个修改后的镜像已经上传至 Docker Hub,可以省略修改配置文件这一步,使用方法

[root@localhost ~]# docker pull codehi/nginx:v1
[root@localhost ~]# docker pull codehi/php:7.1-fpm

这里推荐一款集成环境dnmp,我也使用过还不错,安装方便,功能齐全。

项目地址: https://github.com/yeszao/dnmp

使用docker快速搭建nginx+php环境的更多相关文章

  1. 使用Docker快速搭建Nginx+PHP-FPM环境

    下载nginx官方镜像和php-fpm镜像 docker pull nginx docker pull bitnami/php-fpm 使用php-fpm镜像开启php-fpm应用容器 docker ...

  2. 一文教您如何通过 Docker 快速搭建各种测试环境(Mysql, Redis, Elasticsearch, MongoDB) | 建议收藏

    欢迎关注个人微信公众号: 小哈学Java, 文末分享阿里 P8 高级架构师吐血总结的 <Java 核心知识整理&面试.pdf>资源链接!! 个人网站: https://www.ex ...

  3. Docker-教你如何通过 Docker 快速搭建各种测试环境

    今天给大家分享的主题是,如何通过 Docker 快速搭建各种测试环境,本文列举的,也是作者在工作中经常用到的,其中包括 MySQL.Redis.Elasticsearch.MongoDB 安装步骤,通 ...

  4. 五分钟用Docker快速搭建Go开发环境

    挺早以前在我写过一篇用 `Docker`搭建LNMP开发环境的文章:[用Docker搭建Laravel开发环境](http://mp.weixin.qq.com/s?__biz=MzUzNTY5MzU ...

  5. 使用Docker快速搭建PHP开发环境

    最近有个同事找过来,希望我对在很早之前写的一个PHP网站上增加一些功能,当时开发使用xampp构建的本地开发环境,但是现在我的笔记本电脑已经更新,没有当时的开发环境.本着尽量不往电脑上装无用软件的原则 ...

  6. Docker 快速搭建 MySQL8 开发环境

    使用 Docker 快速搭建一个 MySQL8 开发环境 步骤 获取镜像 docker pull mysql:8 启动容器,密码 123456,映射 3306 端口 docker run --name ...

  7. 使用Docker快速搭建Nginx+PHP-FPM+MySQL+phpMyAdmin环境

    一.概述 环境介绍 操作系统:centos 7.6 docker版本:19.03.8 ip地址:192.168.31.34 本文将介绍如何使用单机部署Nginx+PHP-FPM环境 二.Nginx+P ...

  8. 教你如何用Docker快速搭建深度学习环境

    本教程搭建集 Tensorflow.Keras.Coffe.PyTorch 等深度学习框架于一身的环境,及jupyter. 本教程使用nvidia-docker启动实例,通过本教程可以从一个全新的Ub ...

  9. docker一键搭建Nginx+PHP环境(含自动部署命令)

    文章的主要部分是一步一步的教程,文章的最后是我整理好的一键安装命令,自动下载并安装docker,构建镜像,启动容器集群(压缩包内注释覆盖范围达到80%) 大家可以看完教程亲自尝试下,也可以直接执行一键 ...

随机推荐

  1. Doskey命令详解

    转自:https://blog.csdn.net/u012993732/article/details/48626921 调用 Doskey.exe,它撤回 Windows XP 命令.编辑命令行并创 ...

  2. FPGA高速ADC接口实战——250MSPS采样率ADC9481

    一.前言 最近忙于硕士毕业设计和论文,没有太多时间编写博客,现总结下之前在某个项目中用到的一个高速ADC接口设计部分.ADC这一器件经常用于无线通信.传感.测试测量等领域.目前数字系统对高速数据采集的 ...

  3. 有关Windows10中诊断和反馈隐私设置

    当你使用 Windows 时,我们将收集诊断信息,为了确保能收到你(我们的客户)的反馈,我们为你提供了多种方式,以便你可以随时发送反馈,也可以在某个特定的时间(例如当 Windows 10 向你提出关 ...

  4. July 05th. 2018, Week 27th. Thursday

    Pleasure in the job puts perfection in the work. 乐于工作才能有完美表现. From Aristole. Do you want promotion? ...

  5. SpringBoot2.0之五 优雅整合SpringBoot2.0+MyBatis+druid+PageHelper

    上篇文章我们介绍了SpringBoot和MyBatis的整合,可以说非常简单快捷的就搭建了一个web项目,但是在一个真正的企业级项目中,可能我们还需要更多的更加完善的框架才能开始真正的开发,比如连接池 ...

  6. SOAP webserivce 和 RESTful webservice 对比及区别(转载)

    简单对象访问协议(Simple Object Access Protocol,SOAP)是一种基于 XML 的协议,可以和现存的许多因特网协议和格式结合使用,包括超文本传输协议(HTTP),简单邮件传 ...

  7. CentOS 查看和修改 Mysql 字符集

    客户提供了 mysql 的环境,但是不支持中文,通过以下命令查看了 mysql 的字符集 mysql> show variables like 'character_set%'; 显示如下: + ...

  8. java双重检测或枚举类实现线程安全单例(懒汉模式)

    双重检测实现 /** * 懒汉模式->双重同步锁单例模式 */ public class SingletonExample5 { private SingletonExample5() { } ...

  9. 从壹开始前后端分离 [ Vue2.0+.NET Core2.1] 二十║Vue基础终篇:传值+组件+项目说明

    缘起 新的一天又开始啦,大家也应该看到我的标题了,是滴,Vue基础基本就到这里了,咱们回头看看这一路,如果你都看了,并且都会写了,那么现在你就可以自己写一个Demo了,如果再了解一点路由,ajax请求 ...

  10. java~lombok里的Builder注解

    lombok注解在java进行编译时进行代码的构建,对于java对象的创建工作它可以更优雅,不需要写多余的重复的代码,这对于JAVA开发人员是很重要的,在出现lombok之后,对象的创建工作更提供Bu ...