centos7上用docker安装php和nginx镜像,nginx以unix socket方式连接php

一、Centos7安装Docker

1. 查看内核版本,3.10以下不行:

uname -r

2. 升级系统依赖(看情况,不兼容时再执行也行)

升级所有包同时也升级软件和系统内核

yum -y update

只升级所有包,不升级软件和系统内核

yum -y upgrade

3. 查看Docker版本, 确认是否已安装

docker -v 或者 docker version

4. 移除旧版本

5. 安装必要的依赖

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

6. 添加软件源

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

7. 安装Docker-CE(社区免费版)

sudo yum install docker-ce

8. 启动Docker服务

sudo systemctl start docker

9. 设置Docker开机自启动

sudo systemctl enable docker

二、Docker安装镜像

2.1 安装镜像

安装PHP镜像

docker pull php:7.4-fpm

安装Nginx镜像

docker pull nginx

查看安装的镜像

2.2 命令行方式创建容器并运行

创建并运行PHP容器

docker run --name myphp   -v /home/php/php-fpm-www.conf:/usr/local/etc/php-fpm.d/www.conf  -v /home/php/php.conf:/usr/local/etc/php-fpm.conf  -v /home/php/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf   -v /home/sock:/sock  -v /home/html:/usr/share/nginx/html -d php:7.4-fpm

其中,-d参数用于将容器设置为后台运行模式,–name参数用于指定容器名称,-v参数用于将本地目录映射到容器内的目录,php:7.4-fpm则是使用的PHP镜像。

映射php配置文件

-v /home/php/php-fpm-www.conf:/usr/local/etc/php-fpm.d/www.conf
-v /home/php/php.conf:/usr/local/etc/php-fpm.conf
-v /home/php/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf

/home/php/php-fpm-www.conf修改如下:

...
listen = /sock/php-fpm.sock
listen.mode = 0666
...  

/home/php/zz-docker.conf修改如下:

...
listen = /sock/php-fpm.sock
....

映射项目代码文件(需要与下面的Nginx容器中映射的目录一致)

-v /home/html:/usr/share/nginx/html

共享php的sock文件夹(与Nginx容器启动时的共享目录保持一致)

-v /home/sock:/sock

创建并运行Nginx容器

docker run --name mynginx -v /home/sock:/sock -v /home/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf -v /home/html:/usr/share/nginx/html -p 8088:80 -d nginx:latest

其中,-d参数用于将容器设置为后台运行模式,–name参数用于指定容器名称,-p参数用于将容器内的80端口映射到主机的8088端口上,-v参数用于将本地目录映射到容器内的目录,nginx:latest则是使用的Nginx镜像名

映射配置文件(指定用unix socket的方式连接php)

-v /home/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf

映射项目代码文件(需要与上面的PHP容器中映射的目录一致)

-v /home/html:/usr/share/nginx/html

共享php的sock文件夹(与PHP容器启动时sock文件共享目录保持一致)

-v /home/sock:/sock

2.3 docker-compose方式创建容器并运行

安装Docker Compose

curl -L https://get.daocloud.io/docker/compose/releases/download/v2.16.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

增加可执行权限
sudo chmod +x /usr/local/bin/docker-compose

创建软连接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

测试是否安装成功
docker-compose version

创建yml文件
vim /home/docker-compose/docker-compose.yml

内容如下:

version: "3"
services:
    nginx:
        image: nginx:latest
        container_name: "my-nginx"
        restart: always
        ports:
            - "8089:80"
        environment:
           - TZ=Asia/Shanghai
        depends_on:
           - "php"
        volumes:
           - "/home/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf"
           - "/home/html:/usr/share/nginx/html"
           - "/home/sock:/sock"
    php:
        image: php:7.4-fpm
        container_name: "my-php"
        restart: always
        environment:
            - TZ=Asia/Shanghai
        volumes:
            - "/home/php/php-fpm-www.conf:/usr/local/etc/php-fpm.d/www.conf"
            # - "/home/php/php.conf:/usr/local/etc/php-fpm.conf"
            - "/home/php/zz-docker.conf:/usr/local/etc/php-fpm.d/zz-docker.conf"
            - "/home/html:/usr/share/nginx/html"
            - "/home/sock:/sock"

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: 定义网络信息
depends_on: 设置依赖关系,可以让docker-compose按依赖关系启动

执行docker-compose,启动服务

docker-compose up -d

// -d 以后台运行的方式启动  

停止服务: docker-compose stop

三、扩展

3.1 常用命令

进入容器内部

docker exec -it 容器名称 bash

例如:
docker exec -it myphp bash

退出容器内部

ctrl + p +q

查看已有的镜像

docker images

查看已运行的容器

docker ps

可查看历史
docker ps -a

启动容器

docker run -d --name 容器别名 -p 主机端口:容器内端口 镜像名
docker run -d --name myphp -p 9999:9000 php:7.4-fpm

停止容器

docker stop 容器名
docker stop myphp

删除容器(数据会丢失)

docker rm 容器名
docker rm myphp

拷贝文件

docker cp 容器名:源路径 主机的目标路径
docker cp 主机的源路径 容器名:目标路径

docker cp myphp:/usr/local/etc/php-fpm.d/www.conf /home/php/php-fpm-www.conf

docker cp /home/php/php-fpm-www.conf myphp:/usr/local/etc/php-fpm.d/www.conf

3.2 容器默认配置文件位置

PHP配置文件

/usr/local/etc/

/usr/local/etc/php-fpm.d/

Nginx配置文件

/etc/nginx/conf.d/

本作品采用《CC 协议》,转载必须注明作者和本文链接
学过的东西能说出来那是最妙的,能复盘写下来那也不错
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!