Sign inSign up

diablo7/laravel

By diablo7

•Updated almost 4 years ago

Image
0

58

diablo7/laravel repository overview

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

Tag summary

Content type

Image

Digest

sha256:e1d132f32…

Size

49.1 MB

Last updated

almost 4 years ago

docker pull diablo7/laravel:8.0