docker搭建nginx和php-fpm环境(官方镜像)_php-fpm nginx镜像-程序员宅基地

技术标签: docker  

拉取镜像(这个不多说了)

MacbookdeMacBook-Pro:~ macbookpro$ docker pull nginx
MacbookdeMacBook-Pro:~ macbookpro$ docker pull php

首先创建php容器

MacbookdeMacBook-Pro:~ macbookpro$ docker run --name change-php -v /Users/macbookpro/Desktop/test_docker/html:/var/www/html -p 9000:9000 -d php:7.1-fpm
13c7c2dc2927054027c1f834cf4f9c2dfbb6781cf796a65c86560c86f7551bf5

##各项参数说明
1.--name 为容器命名为change-php
2.-v 挂载文件,这里是把当前宿主机的目录 挂载到容器的项目目录上
3.-p 端口 9000:9000 代表把宿主机的端口映射到容器的9000端口
4.-d后台守护进程
php后面的冒号:版本号

## 查看运行情况
MacbookdeMacBook-Pro:~ macbookpro$ docker ps -a
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                    PORTS                                      NAMES
13c7c2dc2927        php:7.1-fpm                           "docker-php-entrypoi…"   3 seconds ago       Up 2 seconds              0.0.0.0:9000->9000/tcp                     change-php

当STATUS 为Up的时候才算启动成功

创建nginx容器

MacbookdeMacBook-Pro:~ macbookpro$ docker run -d --name change-nginx -p 666:80 -v /Users/macbookpro/Desktop/test_docker/html:/var/www/html -v /Users/macbookpro/Desktop/test_docker/conf.d:/etc/nginx/conf.d --link change-php:change-php nginx
23a73e0d25d796bae925f19a5dc7de346e09e75f368386e218a61ed3b8e0f188

##各项参数说明
1.--name 为容器命名为change-nginx
2.-v 挂载文件,这里是把当前宿主机的目录 挂载到容器的项目目录上
3.-p 端口 666:80 代表把宿主机的666端口映射到容器的80端口
4.--link 代表把nginx容器和php-fpm容器 相关联  一般是 (--link php容器名:新命名)
5.-d后台守护进程
MacbookdeMacBook-Pro:~ macbookpro$ docker ps -a
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                    PORTS                                      NAMES
23a73e0d25d7        nginx                                 "nginx -g 'daemon of…"   9 seconds ago       Up 7 seconds              0.0.0.0:666->80/tcp                        change-nginx
当STATUS 为Up的时候才算启动成功

重点说一下nginx的配置文件

1.需要把我们自定义的配置文件挂载到容器的配置文件上
2.基本需要改的是root目录和fastcgi_pass的地址
3.root目录:这个是自定义,没什么毛病

4.fastcgi_pass地址:这个是重点,
fastcgi_pass   change-php:9000;

一般由 php-fpm容器名:9000,这样组成
5.这个conf文件可以在宿主机上面创建好,然后拷贝到容器中的配置文件中,进行覆盖,下一点就说道如何进入容器和如何拷贝文件到容器中



下面是例子
server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /var/www/html;
        index  index.html index.htm index.php;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /var/www/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
        #proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /var/www/html;
        fastcgi_pass   change-php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    location ~ /\.ht {
        deny  all;
    }
}

进入nginx容器

进入容器很简单,命令如下
docker exec -it 容器名 /bin/bash

只需要查出容器的id,如何查出容器id?以下第一列就是容器的id
MacbookdeMacBook-Pro:~ macbookpro$ docker ps -a
CONTAINER ID        IMAGE                                 COMMAND                  CREATED             STATUS                    PORTS                                      NAMES
23a73e0d25d7        nginx                                 "nginx -g 'daemon of…"   9 seconds ago       Up 7 seconds              0.0.0.0:666->80/tcp                        change-nginx

进入之后 如下。
MacbookdeMacBook-Pro:~ macbookpro$ docker exec -it 23a73e0d25d7 /bin/bash
root@23a73e0d25d7:/# ls
bin  boot  dev	etc  home  lib	lib64  media  mnt  opt	proc  root  run  sbin  srv  sys  tmp  usr  var

拷贝文件到容器

也很简单
从主机复制到容器:docker cp 宿主机文件地址 容器id:容器文件地址

从容器复制到主机:docker cp 容器id:容器文件地址 宿主机文件地址

##进入nginx容器可以查出配置文件,只需要覆盖这个default.conf
root@23a73e0d25d7:/etc/nginx/conf.d# ls
default.conf

MacbookdeMacBook-Pro:~ macbookpro$ docker cp /Users/macbookpro/Desktop/test_docker/conf.d/default.conf 7701a00b6db4:/etc/nginx/conf.d/default.conf

重启nginx

docker exec进入容器之后,直接 service nginx reload就可以,不要重启容器

运行php文件

浏览器输入localhost:666/index.php
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_35765928/article/details/87715448

智能推荐

rpm方式离线安装ansible(超快)_ansible centos6 rpm 离线-程序员宅基地

文章浏览阅读2k次。#在同等版本有外网的机器上下载ansible全部rpm+依赖包然后上传到无网络服务器进行安装[root@localhost ~]# yum install epel-release -y[root@localhost ~]# yum install yum-utils -y[root@localhost ~]# mkdir ansible[root@localhost ~]# yumdownloader --resolve --destdir /root/ansible/ ansible/roo_ansible centos6 rpm 离线

mysql卸载报错1606_MySQL-程序员宅基地

文章浏览阅读139次。第1章 初涉MySQL1.1 MySQL文件(1)MySQL目录结构(2)MySQL配置向导文件(安装后配置时使用)(3)MySQL配置文件(配置后改配置时使用)主要配置:(默认安装为C盘,本人安装在D盘)1.2基本命令操作命令位置:cmd:在系统命令提示符执行MySQL Command Line Client:在MySQL命令行客户端执行mysql>, MySQL登录状态,以上两者内执行都..._惠普电脑mysql卸载

Java流与文件操作_java从流里操作文件-程序员宅基地

文章浏览阅读521次,点赞2次,收藏4次。Java流与文件操作数据流的基本概念总体流程图文件相关操作创建文件获取文件的相关信息方法目录的操作和文件删除Java IO流原理流的分类FileInputStreamFileOutPutStream文件拷贝文件字符流FileReaderFileWriter节点流和处理流节点流和处理流的区别和联系处理流的功能主要体现BufferedReaderBufferedWriter字符处理流拷贝文件字节处理流拷贝文件对象处理流序列化和反序列化注意事项ObjectOutPutStream(序列化)ObjectInputP_java从流里操作文件

操作系统复习笔记--第四章 线程_多对多模型允许系统创建足够多的-程序员宅基地

文章浏览阅读8.7k次,点赞3次,收藏5次。四.线程1、线程的引入目的:减少进程切换和创建开销,提高执行效率和节省资源2、实现:将进程的资源申请和调度属性分开。即进程作为资源的申请和拥有者,但不作为调度的基本单位,这样,就产生了线程的概念。3、线程:是进程中的一个实体,是独立调度和分派的基本单位。4、优点:响应度高、经济、资源共享、多处理器体系结构的利用5、线程是CPU运行的一个基本单元,包括程序计数器、寄存器集、栈空间6、一个线程与它的对等线程共享代码段、数据段、操作系统资源7、传统的或重型进程等价于只有一个线程的任务_多对多模型允许系统创建足够多的

windows安装perl_windows perl-程序员宅基地

文章浏览阅读949次。windows安装perl_windows perl

结构体知识总结_结构体 知识总结-程序员宅基地

文章浏览阅读143次。结构体基本语法数组是把相同类型的变量集中在一起,而结构体则是把不同类型的变量集中在一起。例如:下面的例子包含如何赋值,如何引用结构体变量。#include<stdio.h>struct weapon{ char name[20] int atk; int price; };int main(){ int a=0; float b..._结构体 知识总结

随便推点

常规功能和模块自定义系统 (cfcmms)—045模块导航功能的重构(3)导航的定义_@fielddefine-程序员宅基地

文章浏览阅读1k次。045模块导航功能的重构(3)多层控制  导航树中的导航值不能只是单一属性,也可以是多属性的组合。例如对客户单位可以按照二级导航:“省-市”来进行。_@fielddefine

laravel 创建新项目时出现 You made a reference to a non-existent script @php -r "file_exists('.env') || copy(...-程序员宅基地

文章浏览阅读1.2k次。laravel 创建新项目时出现You made a reference to a non-existent script @php -r "file_exists('.env') || copy('.env.example', '.env');"You made a reference to a non-existent script @php artisan key..._you made a reference to a non-existent script @auto-scripts

IO等待慢分析_i/o等待时间长-程序员宅基地

文章浏览阅读1.9k次。数据库io请求很少top 10等待事件:tablespace io Stats:(磁盘平均读取时间>20ms,磁盘存在性能问题,这里ndsc_index和ndsc_data所在磁盘平均读取已经超过40ms。)附oswatch报告各磁盘的平均service timeOperating System Statistics:..._i/o等待时间长

基因编辑技术:能让人类永生下去?_乔治丘奇 逆转衰老-程序员宅基地

文章浏览阅读1.1w次。图:有争议的哈佛大学研究人员丘奇称猪器官将可以用于人体器官移植,利用脑移植治疗老年痴呆症  凤凰网科技讯据《每日邮报》北京时间 7 月 5 日报道,未来有一天,人类将利用猪培养用于人体器官移植的器官,利用脑移植治疗帕金森氏综合征。  这是颇有争议的哈佛大学遗传学家乔治·丘奇(George Church)所说的,他认为,DNA 技术的进步将很快改变我们的生活方式。  这位科学家目前正在研究培育能用于..._乔治丘奇 逆转衰老

Human3.6m数据集_human 3.6m database-程序员宅基地

文章浏览阅读4.3k次,点赞8次,收藏23次。最近用到了Human3.6数据集,整理一下链接1、原数据链接http://vision.imar.ro/human3.6m/,需要注册申请,时间可能很长,也很大。看别的帖子说很长,没试,好像是cdf文件。2、 3d pose baseline(https://github.com/una-dinosauria/ ) 中的链接,已经失效了https://www.dropbox.com/s/e35qv3n6zlkouki/h36m.zip3、知乎上的帖子-3D人体姿态估计-Human3.6m相..._human 3.6m database

vmware 主机ping不通虚拟机,但是虚拟机能ping通主机_vmware vnett8 ping不通-程序员宅基地

文章浏览阅读215次。重启vnet8网卡就好了。。。。_vmware vnett8 ping不通

推荐文章

热门文章

相关标签