docker php8安装
WHY
最近开始学习laravel,对要求php8以上,正好趁此机会,也了解下php8
因为本地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
访问效果
附:
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; } }