制作鏡像
由於官方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
這樣直接輸入網址就可以打開了。