打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
docker搭建nginx和php

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

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
十二、Docker部署nginx并挂载本地目录到镜像
docker部署LNMP架构
让Docker实现自动化运维的专业方法
使用 Docker 高效搭建本地开发环境(详细教程)
win7 Nginx+php+mysql
Nginx实现多个站点使用一个端口(配置Nginx的虚拟主机) ? 耕耘半亩田
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服