WHY

最近开始学习laravel,对要求php8以上,正好趁此机会,也了解下php8

docker php8安装_php

 

 因为本地docker之前有过nginx、php7.5的镜像容器在运行,最初打算新起个php8的docker容器,然后和现有nginx走同一个network,通过不同的name来区分指定(之前php7name为php,这个打算name为php8),然后nginx配置做转发时,根据对于对应的name来区分。。

理想很美,但按照这样的逻辑来实现一直未成功。希望有解决办法的朋友们能够在评论里分享出来

中间通过指定端口来启动php8容器,也未能实现上面的目的....

那么只能,

新起nginx容器+php8容器走一个独立的network

 

HOW

notice: 对应使用的镜像需自行先下载

我的laravel项目代码位置: ~/dev/wanghaokun/laravelTest

 

create network

docker network create -d bridge nginxphp8

create php container

docker run --name php8 --net nginxphp8 --network-alias php8 --restart=on-failure:10 -v /Users/wanghaokun/dev:/www/code -d wohaokun/php8:1.0

create nginx container

docker run --name nginxphp8 -p 9084:9084 -d -v /Users/wanghaokun/dev:/www/code --net nginxphp8 --restart=on-failure:10 wohaokun/nginxphp8:1.0

WHAT

访问效果

docker php8安装_php_02

 

 

附:

nginx laravel 配置

之前一直想把代码及日志目录挂到/dev目录下,发现每次容器重启和commit提交镜像,里面修改的内容均不会被保存,故将数据统一放到了新建的 /www 目录下。

server {
listen 9084;
# listen [::]:80;
# server_name example.com;
root /www/code/wanghaokun/laravelTest/public;

add_header X-Frame-Options "SAMEORIGIN";
add_header X-Content-Type-Options "nosniff";

index index.php;

charset utf-8;

location / {
try_files $uri $uri/ /index.php?$query_string;

access_log /www/logs/laravelTest-api-access.log main;
error_log /www/logs/laravelTest-api-error.log;
}

location = /favicon.ico {
access_log off;
log_not_found off;
}
location = /robots.txt {
access_log off;
log_not_found off;
}

error_page 404 /index.php;

location ~ \.php$ {
fastcgi_pass php8:9000;
# fastcgi_pass unix:/var/run/php/php8.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
}

location ~ /\.(?!well-known).* {
deny all;
}
}