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;
    }
}

posted on 2022-06-17 10:28  爱吃柠檬不加糖  阅读(1518)  评论(0编辑  收藏  举报

导航