首页 > 技术文章 > docker-compose搭建nginx+php环境

trblog 2020-12-01 01:25 原文

docker-compose搭建nginx+php环境

准备工作

docker-compose的下载安装:

https://www.runoob.com/docker/docker-compose.html

创建工作目录和需要挂载的目录:

# 工作目录(一会儿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

添加nginx配置:

vim /disk2/nginx/conf.d/detault.conf 

把下面配置放到default.conf

server {
    listen  80 default_server;
    server_name  localhost;

    root  /usr/share/nginx/html;
    location / {
        index index.html index.htm index.php;
    }

    location ~ \.php$ {
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}

编写docker-compose.yml文件

创建docker-compose.yml

vim /disk2/docker/docker-compose/docker-compose.yml

先上yml文件, 然后再说明作用

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:  
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按依赖关系启动

执行docker-compose

docker-compose up -d

运行命令后镜像下载了,但是却出现了些问题(没有问题的跳过该部分)

?出现端口占用

解决:利用下面命令找出端口,停止或kill

netstat -tunlp|grep 端口

? 挂载目录或文件出现问题
解决: 检查目录或文件是否存在

修改配置文件后,重启容器

docker-compose up -d --force-recreate

启动成功:

现在来试试:

vim /disk2/www/index.php

在文件添加一下内容

<?php phpinfo();

可以正常访问:

推荐阅读