用docker搭建php+nginx+laravel的開發環境


制作鏡像

由於官方php:7.2.2-fpm-alpine3.7 鏡像不含composer,而單獨做一個composer鏡像又會依賴php鏡像,所以應該在php鏡像中添加composer.Dockerfile如下:

FROM php:7.2.2-fpm-alpine3.7
LABEL maintainer="php-composer Docker Maintainers <ikodota@gmail.com>"

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" && \
php composer-setup.php && \
php -r "unlink('composer-setup.php');" && \
mv composer.phar /usr/local/bin/composer && \
composer self-update

生成鏡像

docker build -t bx-php:7.2.2-fpm-alpine3.7

准備配置文件:

我的本地配置文件為 /data/server/conf/nginx/conf.d/member.conf

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /app/public;
        index  index.php index.html index.htm;
        try_files $uri $uri/ /index.php?$query_string;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
        fastcgi_pass   phpfpm:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME  /app/public/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

運行docker

運行一個本地數據卷

docker run --name vc_member \
    -v /data/wwwroot/retail/member/src:/app \
    -v /data/server/conf/nginx/conf.d:/etc/nginx/conf.d \
    alpine:latest 

執行php-fpm

docker run --name phpfpm -d \
--volumes-from vc_member \
bx-php:7.2.2-fpm-alpine3.7 

需要進入phpfpm容器,修改一些配置和文件權限,以及執行composer install /composer update等。
注意:
1.執行composer install 時,可能會出現“root用戶不能使用的情況”,需要執行:composer install --no-plugins --no-scripts
2.【非常重要】進入phpfpm容器:docker exec -it phpfpm sh 然后修改“ listen = 127.0.0.1:9000” 為“listen = 9000” 否則連不上php
3.允許nginx用戶訪問:chown -R www-data:www-data /app
4.賦予storage目錄寫權限:chmod -R 755 /app/storage

運行nginx

docker run --name nginx -p 8080:80 -d \
--volumes-from vc_member \
--link phpfpm:php \
nginx:1.13.8-alpine

這樣直接輸入網址就可以打開了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM