吉祥之巅 發表於 2020-12-1 01:25:00

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>&lt;?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]
查看完整版本: docker-compose搭建nginx+php环境