Docker 学习之部署php + nginx(一)
博主电脑系统是window 10 专业版的,所以在此记录下docker的基本使用方法。
参考地址:
https://www.runoob.com/docker/docker-install-php.html
https://learnku.com/articles/28020
在这里主要也就是针对上述地址做一个完整版的整合,主要方便以后查看。
一. 系统检查
1.1 检查自己的电脑是否开启了虚拟化(在任务管理器 \ 性能 界面查看)
进入方法:在最下方的任务栏 -> 鼠标右键 -> 任务管理器
* 详细请参考:https://jingyan.baidu.com/article/59703552811e468fc0074027.html

1.2 查看 Hyper-V 是否打开
进入方法:控制面板 -> 程序 -> 程序和功能 -> 启动或关闭 Windows 功能
详细请参考:https://jingyan.baidu.com/article/c1a3101e10c965de656debc2.html
**注意**:如果自己的电脑虚拟化已经开启,同时 自己的电脑系统版本又是 win10 专业版及以上 Hyper-v 还是无法开启,那么楼主建议不要去纠结了直接重装系统,楼主为了这个弄了一天最终还是重装系统解决的。

二。Docker 安装
2.1 docker 下载及安装
官方下载地址:https://www.docker.com/get-started
在下载过程中可能会需要去注册一个账号,这里就不细说,
详细请参考:https://www.runoob.com/docker/windows-docker-install.html
安装完docker 以后我们需要做一个简单的设置

在安装完成成功运行以后我们点击 这个小鲸鱼 -> 单击 Settings ,进入设置界面 -> 左边菜单栏 点击 Daemon -> 点击Basic -> 找到 "registry-mirrors":[]

设置完成以后 点击 Apply 自动重启 docker
2.2 nginx 安装
2.2.1 查找nginx
docker search nginx

2.2.2 拉取官方的nginx
docker pull nginx

拉取完成以后,查看当前镜像文件
docker images nginx

2.2.3 启动nginx容器实例
docker run -d -p 8080:80 --name mynginx nginx
-d:后台运行
-p:设置端口号映射到本机,将 80 端口映射到本机的 8080 端口,外部访问8080端口即可
--name:设置容器名称

2.2.4 查看启动的nginx实例docker ps -l
-l:表示查看最后一个启动的容器,可以不用带
-a:表示查询查询所有启动过的容器,包括停止的容器 docker ps: 查看当前运行中的容器

2.2.5 本机访问测试

进入到此页面表示 nginx 安装成功
三。php + nginx 部署
3.1 在本地电脑创建如下几个文件夹方便后续将容器内文件映射到本地修改

3.2 搜索php
docker search php

3.3 拉取php
docker pull php:7.1-fpm
# 因为PHP有多个版本,这里就以拉取7.1版本为例子

3.4 启动php
3.4.1 随便启动一个,因为需要将php的配置文件和日志文件复制出来到本地
docker run -d -v E:\docker\www:/var/www/html -p 9000:9000 --name myphp php:7.1-fpm
-d:后台运行
-v E:\docker\www:/var/www/html: 将本地的html存储地址和php的html存储地址做一个映射
--name myphp:重命名

3.4.2 复制php的配置文件和日志文件到本地
docker cp myphp:/usr/local/etc E:\docker\php-conf
docker cp myphp:/usr/local/var/log E:\docker\php-log
docker cp myphp:/var/www/html E:\docker\www
myphp:是我们前面运行的php的名称

复制完以后我们可以在本地对应的文件夹下面看到复制出来的文件,这个时候我们需要做一个处理,就是将这些文件夹中的文件全部复制到根目录,如下

php-log 文件夹中没有东西是因为复制出来的log下本身就没有文件,所以不用管
3.4.3 删除原有的myphp,重新运行php
# 停止myphp 容器
docker stop myphp # 删除myphp 容器
docker rm myphp # 重新运行php容器,同时映射配置文件
# 全指令
docker run -d -v E:\docker\php-conf:/usr/local/etc -v E:\docker\php-log:/usr/local/var/log -v E:\docker\www:/var/www/html -p 9000:9000 --name myphp php:7.1-fpm#指令分析
docker run -d
-v E:\docker\php-conf:/usr/local/etc # 指定配置文件
-v E:\docker\php-log:/usr/local/var/log # 指定日志文件
-v E:\docker\www:/var/www/html # 指定html界面路径
-p 9000:9000 # 映射端口号
--name myphp php:7.1-fpm # 重命名 # 查看运行的容器
docker ps

3.4.4 复制nginx的配置文件到本地
因为光有php还不行,因为php只能帮我们编译php代码,而运行还是需要依靠服务器来完成
docker cp mynginx:/etc/nginx E:\docker\nginx-conf
# 因为我们之前就已经创建一个一个nginx容器,所以直接将里面的配置文件复制出来就可以了。
docker stop mynginx
# 停止这个容器
docker rm mynginx
# 删除这个容器
复制出配置文件以后,我们还需要在log文件中创建如下两个文件


3.4.4 重新启动nginx,同时指定映射文件位置
# 全命令
docker run -d -p 80:80 -v E:\docker\www:/var/www/html -v E:\docker\nginx-conf:/etc/nginx/ -v E:\docker\nginx-log:/var/log/nginx/ --link myphp:php --name mynginx nginx # 命令分析
docker run -d -p 80:80 # 映射端口号
-v E:\docker\www:/var/www/html # 指定html页面位置
-v E:\docker\nginx-conf:/etc/nginx/ # 指定配置文件位置
-v E:\docker\nginx-log:/var/log/nginx/ # 指定日志文件位置
--link myphp:php --name mynginx nginx # 重命名 指定本地html储存的位置与nginx做映射
指定本地nginx的配置文件位置和nginx配置文件做映射
3.4.5 本地修改配置文件(附上配置文件,仅供参考)
文件位置是前面映射过来到本地的文件夹

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.php index.html index.htm;
}
#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 /usr/share/nginx/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 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;
#}
}
在配置文件中需要将 php 的注解去掉,并且修改访问的路径
3.4.6 创建index.php

3.4.7 本地测试运行

注意:在这里我们主要注意一下 nginx配置文件中的 php 下的 fastcgi_pass 和 fastcgi_param,因为如果 php 下的这两个出错 将会导致php的代码无法解析从而报错, 还有要检查配置文件是否映射正确。
Docker 学习之部署php + nginx(一)的更多相关文章
- DOCKER 学习笔记5 Springboot+nginx+mysql 容器编排
前言 在上节的内容中,我们已经通过一个简单的实例,将Docker-compose 进行了实际的应用.这一小节中.我们将通过学习和了解,着重认识容器的编排,上一节只算是一个小小的测试.在这一节中.我们将 ...
- 从docker到docker-compose部署一个nginx+flask+mysql+redis应用
目的是把一个flask项目的mysql数据库.redis数据库.flask应用.nginx服务分别装到四个容器中,然后用docker-compose命令同时启动与关闭 一.安装docker Docke ...
- Docker学习——Lepus部署
Lepus部署(基于docker)及mysql慢查询配置 介绍 Lepus是一个由Python+PHP开发的数据库企业级监控系统,可用于MySQL/Oracle/MongoDB/Redis 下载镜像 ...
- Docker学习之4——构建NGINX镜像
Nginx是一个高性能的Web和反向代理服务器,它具有很多非常优越的特性:1.作为Web服务器.2.作为负载均衡服务器.3.作为邮件代理服务器.4.安装及配置简单.接下来我们介绍在docker构建ng ...
- Docker学习——pinpoint部署
Pinpoint Install pinpoint-server 下载镜像 docker pull yous/pinpoint 查看镜像 docker images 启动容器 docker run - ...
- Docker学习——gitlab部署
Gitlab 下载镜像 docker pull hub.c.163.com/gutenye/gitlab-ce:latest 查看镜像 docker images 启动容器 宿主机和docker的端口 ...
- Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(一)
上一节演示如何安装Docker,链接:Docker学习笔记之-在CentOS中安装Docker 本节演示 将.net core 3.1 部署到docker容器当中,并使用 Nginx反向代理,部署平台 ...
- docker入门与部署微服务--学习笔记
最近公司进一步去windows,走向 linux+云化. 原来的一大坨windows虚拟机服务器都要转向linux, 既然走向linux的话,那么docker肯定是要涉足的. 故学习了docker入门 ...
- Docker学习之搭建nginx环境
前言 很久没写随笔了,今天我们来学习一下如何在docker搭建nginx环境吧! 一:下载镜像,使用docker pull拉取最新的nginx镜像 命令:docker pull nginx 查看镜像: ...
随机推荐
- development tool
Eclipse : https://www.eclipse.org/downloads/ WebStorm: http://www.jetbrains.com/webstorm/do ...
- 夯实Java基础(二十二)——Java8新特性之Lambda表达式
1.前言 Java 8于14年发布到现在已经有5年时间了,经过时间的磨练,毫无疑问,Java 8是继Java 5(发布于2004年)之后的又一个非常最重要的版本.因为Java 8里面出现了非常多新的特 ...
- uniapp - 导航切换(样式)
<view class="text-area" v-for="(menu,i) in menus" :key="i" v-show=& ...
- springboot之快速创建项目
1.选择创建新项目: 2.选择spring initializr,然后next 3.填写项目元数据,然后next 4.选择项目依赖,然后next 5.点击finish,完成项目创建
- Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件
一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...
- python学习 —— 使用QRCode包生成二维码
我使用的是python3,最简单的方法就是使用QRCode,如果没有安装QRCode package,那么可以使用下面命令进行安装: pip3 install QRCode 然后,测试一下: from ...
- luogu P3356 火星探险问题
本题很简单的费用流问题,有石头的点需要限制,那我们就可以拆点,capacity为1就可以限制,然后cost为-1,直接跑板子就可以了,注意输出的时候找残量网络的反向边
- Fescar分布式事务实现原理解析探秘
前言 fescar发布已有时日,分布式事务一直是业界备受关注的领域,fescar发布一个月左右便受到了近5000个star足以说明其热度.当然,在fescar出来之前,已经有比较成熟的分布式事务的解决 ...
- 【剑指Offer面试编程题】题目1511:从尾到头打印链表--九度OJ
题目描述: 输入一个链表,从尾到头打印链表每个节点的值. 输入: 每个输入文件仅包含一组测试样例. 每一组测试案例包含多行,每行一个大于0的整数,代表一个链表的节点.第一行是链表第一个节点的值,依次类 ...
- AngularJS 官方启动文档
参考:https://angular.io/guide/quickstart 中文:http://www.angularjs.net.cn/