docker搭建nginx+php环境的两种方式

docker搭建nginx+php环境的两种方式_第1张图片

# 搜索nginx镜像
docker search nginx
# 拉取nginx镜像
docker pull nginx
# 检查镜像是否拉取成功
docker images
# 运行一个测试的nginx
docker run -d --name nginxtest nginx
# 把容器里的nginx目录复制出来,配置是放在/etc/nginx
docker cp nginxtest:/etc/nginx ./
# 把容器里的log目录复制出来,日志是放在/var/log
docker cp nginxtest:/var/log ./
# 删除测试的nginx-test
docker rm -f nginxtest
# 查看nginx配置结构
[root@localhost ~]# tree nginx
nginx
├── conf.d
│   └── default.conf
├── fastcgi_params
├── mime.types
├── modules -> /usr/lib/nginx/modules
├── nginx.conf
├── scgi_params
└── uwsgi_params
# 查看log日志结构
[root@localhost ~]# tree log
log
├── apt
│   ├── eipp.log.xz
│   ├── history.log
│   └── term.log
├── btmp
├── dpkg.log
├── faillog
├── lastlog
├── nginx
│   ├── access.log -> /dev/stdout
│   └── error.log -> /dev/stderr
└── wtmp
# 拉取php镜像
docker pull php:7.4.28-fpm
# 检查镜像是否拉取成功
docker images
# 运行一个测试的nginx
docker run -d --name phptest php:7.4.28-fpm
# 把容器里的php目录复制出来,进容器php -i | grep php.ini可查看配置文件目录
docker cp phptest:/usr/local/etc/php ./
# 删除测试的php-test
docker rm -f phptest
# 查看php目录
[root@localhost ~]# tree php
php
├── conf.d
│   └── docker-php-ext-sodium.ini
├── php.ini-development
└── php.ini-production
[root@localhost data]# tree /data
/data
├── nginx
│   ├── conf.d
│   │   └── default.conf
│   └── log
│       ├── access.log
│       └── error.log
├── php
│   └── conf.d
│       └── php.ini  # php.ini-development重名来的
└── www
    ├── index.html
    └── index.php

方式一:

# 生成php容器
docker run -p 9000:9000 -d --name myphp \
-v /data/www:/usr/share/nginx/www \
-v /data/php/conf.d/php.ini:/usr/local/etc/php/php.ini \
php:7.4.28-fpm;
# 查询IPAddress
docker inspect myphp
[root@localhost www]# cat /data/nginx/conf.d/default.conf 
server {
    listen  80 default_server;
    server_name  localhost;

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

    location ~ \.php$ {
        fastcgi_pass   172.17.0.3:9000;  # docker inspect myphp查询的IPAddress改这里
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }
}
# 生成nginx容器
docker run -p 80:80 -itd --name mynginx \
-v /data/www:/usr/share/nginx/www \
-v /data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf \
-v /data/nginx/log:/var/log/nginx \
nginx:latest;

docker搭建nginx+php环境的两种方式_第2张图片

方式二:

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:
           - "/data/nginx/conf.d/default.conf:/etc/nginx/conf.d/default.conf"
           - "/data/nginx/log:/var/log/nginx"
           - "/data/www:/usr/share/nginx/www"
        networks:
           - net-app
    php:
        image: php:7.4.28-fpm
        container_name: "compose-php"
        restart: always
        ports:
            - "9000:9000"
        environment:
            - TZ=Asia/Shanghai
        volumes:
            - "/data/www:/usr/share/nginx/www"
            - "/data/php/conf.d/php.ini:/usr/local/etc/php/php.ini"
        networks:
           - net-app
networks:
    net-app: 
[root@localhost www]# cat /data/nginx/conf.d/default.conf 
server {
    listen  80 default_server;
    server_name  localhost;

    root  /usr/share/nginx/www;
    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;
    }
}
[root@localhost data]# tree ./
./
├── docker-compose.yml
├── nginx
│   ├── conf.d
│   │   └── default.conf
│   └── log
│       ├── access.log
│       └── error.log
├── php
│   └── conf.d
│       └── php.ini
└── www
    ├── index.html
    └── index.php
[root@localhost data]# docker-compose up -d
Creating compose-php ... done
Creating compose-nginx ... done

docker搭建nginx+php环境的两种方式_第3张图片

# 通过docker logs命令可以查看容器的日志。
docker logs -f -t --tail 100 容器名/容器ID

你可能感兴趣的:(运维,后端,php,运维,nginx-php环境搭建,php-nginx搭建)