docker-compose搭建nginx+php环境
<h1 id="docker-composenginxphp">docker-compose搭建nginx+php环境</h1><h2 id="section">准备工作</h2>
<p>docker-compose的下载安装:</p>
<blockquote>
<p>https://www.runoob.com/docker/docker-compose.html</p>
</blockquote>
<p>创建工作目录和需要挂载的目录:</p>
<pre><code># 工作目录(一会儿docker-compose命令将在工作目录下执行)
mkdir -p /disk2/docker/docker-compose
# 需要挂载的目录
mkdir -p /disk2/www
mkdir -p /disk2/nginx/log
mkdir -p /disk2/nginx/conf.d
# 进入工作目录
cd /disk2/docker/docker-compose
</code></pre>
<p>添加nginx配置:</p>
<pre><code>vim /disk2/nginx/conf.d/detault.conf
</code></pre>
<p>把下面配置放到default.conf</p>
<pre><code>server {
listen80 default_server;
server_namelocalhost;
root/usr/share/nginx/html;
location / {
index index.html index.htm index.php;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_indexindex.php;
fastcgi_paramSCRIPT_FILENAME$document_root$fastcgi_script_name;
include fastcgi_params;
}
}
</code></pre>
<h2 id="docker-compose.yml">编写docker-compose.yml文件</h2>
<p>创建docker-compose.yml</p>
<pre><code>vim /disk2/docker/docker-compose/docker-compose.yml
</code></pre>
<p>先上yml文件, 然后再说明作用</p>
<pre><code>version: "3"
services:
nginx:
image: nginx:latest
container_name: "compose-nginx"
restart: always
ports:
- "80:80"
- "443:443"
environment:
- TZ=Asia/Shanghai
depends_on:
- "php"
volumes:
- "/disk2/nginx/conf.d:/etc/nginx/conf.d"
- "/disk2/www:/usr/share/nginx/html"
- "/disk2/nginx/log:/var/log/nginx"
networks:
- net-app
php:
image: php:7.4-fpm
container_name: "compose-php"
restart: always
ports:
- "9000:9000"
environment:
- TZ=Asia/Shanghai
volumes:
- "/disk2/www:/usr/share/nginx/html"
networks:
- net-app
networks:
net-app:
</code></pre>
<pre><code>version: 指定compose版本, 目前主流版本3.x,支持docker1.13.0及以上的版本
services: 定义服务信息
nginx和php: 用户自定义,表示服务名称
image: 镜像
container_name: 容器名称
restart: 定义重启策略
no:是默认的重启策略,在任何情况下都不会重启容器。
always:容器总是重新启动。
on-failure:在容器非正常退出时(退出状态非0),才会重启容器。
unless-stopped:在容器退出时总是重启容器,但是不考虑在Docker守护进程启动时就已经停止了的容器
ports: 设置宿主机和容器之间的端口映射关系
environment: 设置环境变量(TZ=Asia/Shanghai:设置时区)
volumes: 数据卷,定义映射关系,将目录或文件挂载到容器
networks: 定义网络信息,详细的可以去这里看看https://deepzz.com/post/docker-compose-file.html#toc_31
depends_on: 设置依赖关系,可以让docker-compose按依赖关系启动
</code></pre>
<h2 id="docker-compose">执行docker-compose</h2>
<pre><code>docker-compose up -d
</code></pre>
<p><img src="https://img2020.cnblogs.com/blog/955786/202012/955786-20201201011746530-690117114.png"></p>
<h4 id="section-1">运行命令后镜像下载了,但是却出现了些问题(没有问题的跳过该部分)</h4>
<p>?出现端口占用</p>
<p>解决:利用下面命令找出端口,停止或kill</p>
<pre><code>netstat -tunlp|grep 端口
</code></pre>
<p>? 挂载目录或文件出现问题<br>
解决: 检查目录或文件是否存在</p>
<p>修改配置文件后,重启容器</p>
<pre><code>docker-compose up -d --force-recreate
</code></pre>
<p>启动成功:<br>
<img src="https://img2020.cnblogs.com/blog/955786/202012/955786-20201201012413565-55914523.png"></p>
<h2 id="section-2">现在来试试:</h2>
<pre><code>vim /disk2/www/index.php
</code></pre>
<p>在文件添加一下内容</p>
<pre><code><?php phpinfo();
</code></pre>
<p>可以正常访问:</p>
<p><img src="https://img2020.cnblogs.com/blog/955786/202012/955786-20201201011958774-875635980.png"></p><br><br>
来源:https://www.cnblogs.com/trblog/p/14065905.html
頁:
[1]