docker部署php项目

操作环境

  • macOS
  • docker
    • nginx
    • php74
  • Thinkphp6项目

1、前置工作

docker pull nginx
### 我这里对nginx的版本没有要求,就拉取最新的了
docker pull php:7.4-fpm
### 这里我使用的是php7.4,若不指定默认拉取最新的镜像

### 新建一个本地的项目目录,下面的是我本机的目录,按照你们自己的做新建,没有什么要求,后面做挂载使用
mkdir -p /Users/zhiyu/WebFile/Docker/SCRM
### 新建一个nginx配置的目录,用于后面nginx配置的挂载使用
mkdir -p /Users/zhiyu/WebFile/Docker/nginx/conf


### 将需要执行的项目文件放入上面新建好的目录
cd /Users/zhiyu/WebFile/Docker/SCRM
git clone https://localhost/scrm-api.git #具体的项目看你们自己的,这里我只做一个示例

2、运行php镜像

docker run --name scrm-php-0523 -v /Users/zhiyu/WebFile/Docker/SCRM/html:/www -d php:7.4-fpm

### --name 为容器命名,方便后期查找
### -v 挂载本地的目录到容器内:将/Users/zhiyu/WebFile/Docker/SCRM/html目录挂载到容器内的/www上
### -d 后台运行
### php:7.4-fpm 运行的docker镜像

3、新增nginx的配置文件

server {
    listen       80;
    server_name  localhost; ### localhost即可

    location / {
            # root的地址为我们后面运行nginx镜像后,容器内的项目地址
        root   /usr/share/nginx/html/scrm-api/public;
        index  index.html index.htm index.php;
            ###  下面的这个配置非tp项目不需要
                if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=$1  last;   break;
        }
   }


    location ~ \.php$ {
            ### 为什么是php,看下一步的操作
        fastcgi_pass   php:9000;
        fastcgi_index  index.php;
            ### 这个地方的/www/scrm-api/public/ 是第二步中,我们php容器内的项目实际的入口路径
        fastcgi_param  SCRIPT_FILENAME  /www/scrm-api/public/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

4、运行nginx镜像

docker run --name scrm-php-nginx -p 8090:80 -d \
    -v /Users/zhiyu/WebFile/Docker/SCRM/html:/usr/share/nginx/html:ro \
    -v /Users/zhiyu/WebFile/Docker/nginx/conf:/etc/nginx/conf.d:ro \
    --link scrm-php-0523:php \
    nginx

# -p 将本机的8090映射到容器内的80端口
# 第一个 -v 是将本机的项目目录挂载到容器内部,后面的是容器内的项目路径,即第三步内的root的配置时选用的路径
# 第二个 -v 是将本机的nginx配置目录挂载到容器内部
# --link 将第二步执行的php容器与当前的容器进行联通,并以php的别名可以在当前容器内进行使用,即第三步中php:9000,是在当前容器内访问scrm-php-0523的网络接口
# ro 标识只读,可要可不要
# nginx 指定运行的镜像

5、其他说明

## 若你的本地可与容器进行互相访问,可以在本机的hosts文件加入下述代码,即可实现本地域名访问容器内的项目,当然别忘记你第四步映射的端口,若是映射的80端口,不加也行,其他的需要加上端口进行访问
[容器的ip] [domain]


### 查看docker容器的ip
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器名称/ID]

### 本机ping一下容器的ip,能ping通即可使用上述的操作
ping 172.17.0.2 # 具体的ip,看上一步执行后的操作

### 若你的本机与docker容器没办法访问,使用127.0.0.1:8090访问也可以的
本博客所有文章如无特别注明均为原创。作者:止语复制或转载请以超链接形式注明转自 止语
原文地址《docker部署php项目

相关推荐

网友评论(0)