1:镜像中不包含laravel项目,是为laravel项目打造的镜像。包含:php-fpm,nginx,supervisord 2:将larvel项目挂在到容器的 /var/www目录即可,然后将容器的80端口绑定到你要访问的端口
Dockerfile 如下:
FROM php:8.0-fpm-alpine3.16
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
#环境基础软件
RUN apk update && apk add --no-cache nginx supervisor tzdata bash
ARG TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
#composer
RUN curl -s http://getcomposer.org/installer | php && mv composer.phar /usr/local/bin/composer && composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
#php常用扩展
RUN docker-php-ext-install pdo_mysql bcmath opcache pcntl
#安装gd库和zip
RUN apk add --no-cache libpng-dev zlib-dev libzip-dev && docker-php-ext-install gd zip
#将进程加入到supervisor中
RUN set -eux; \
mkdir -p /etc/supervisord /var/run/supervisord /var/log/supervisord; \
{ \
echo '[supervisord]'; \
echo 'logfile=/var/log/supervisord/supervisord.log'; \
echo 'pidfile = /var/run/supervisord/supervisord.pid'; \
echo 'nodaemon=true'; \
echo 'user=root'; \
echo '[include]'; \
echo 'files = /etc/supervisord/*.conf'; \
} | tee /etc/supervisord.conf; \
{ \
echo '[program:nginx]'; \
echo 'command=/usr/sbin/nginx -g "daemon off;"' ; \
echo 'autorestart=true'; \
echo 'autostart=true'; \
} | tee /etc/supervisord/nginx.conf; \
{ \
echo '[program:php-fpm]'; \
echo 'command=/usr/local/sbin/php-fpm -F'; \
echo 'autorestart=true'; \
echo 'autostart=true'; \
} | tee /etc/supervisord/php-fpm.conf;
RUN set -eux; \
{ \
echo 'server {'; \
echo ' listen 80 default_server;'; \
echo ' server_name _;'; \
echo ' root /var/www/public;'; \
echo ' index index.php index.html index.htm;'; \
echo ' autoindex off;'; \
echo ' autoindex_exact_size off;'; \
echo ' autoindex_localtime on;'; \
echo ' location / {'; \
echo ' try_files $uri $uri/ /index.php$is_args$args;'; \
echo ' }'; \
echo ' location ~ \.php$ {'; \
echo ' try_files $uri /index.php =404;'; \
echo ' fastcgi_pass 127.0.0.1:9000;'; \
echo ' fastcgi_index index.php;'; \
echo ' fastcgi_buffers 16 16k;'; \
echo ' fastcgi_buffer_size 32k;'; \
echo ' fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;'; \
echo ' include fastcgi_params;'; \
echo ' }'; \
echo '}'; \
} | tee /etc/nginx/http.d/default.conf;
#空项目下输出php环境信息,如果有项目就不会输出
RUN mkdir -p /var/www/public && echo "<?php phpinfo();" >> /var/www/public/index.php
WORKDIR /var/www
#如果不把项目加入目录就要在外部将项目挂在到 /var/www 目录下
#ADD . /var/www
#RUN composer install -o --no-dev
#将artisan加入crontab
RUN echo "* * * * * /usr/local/bin/php /var/www/artisan schedule:run >> /dev/null 2>&1" >> /var/spool/cron/crontabs/root
#运行启动脚本,成功后再启动crontab和supervisor
ENTRYPOINT ["sh","-c","crond && /usr/bin/supervisord -c /etc/supervisord.conf"]
EXPOSE 80
Content type
Image
Digest
sha256:e1d132f32…
Size
49.1 MB
Last updated
almost 4 years ago
docker pull diablo7/laravel:8.0