docker构建Laravel镜像

docker构建Laravel镜像

      周末捣鼓了自动化部署Laravel项目,在部署之前尝试如何制作了一个Laravel镜像,在本地测试,在这里跟大家分享如何制作一个简单版的Laravel镜像。

      一、准备代码

      我们直接从Laravel官网根据安装方式把laravel项目下到本地,我这里使用了Laravel8,包含了vendor目录,但是一般我们部署在生产上,vendor目录是不会提交到git仓库的,这个在后面我会开一篇教程跟大家分享。

      二、准备nginx配置文件

      我们在根目录下创建一个文件名为default.conf文件,这个文件作为nginx配置,配置如下

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;

    location / {
       root   /var/www/html/public;
       index  index.php index.html index.htm;

       # 如果没有以下4行,laravel将只能访问首页,其他页面都是404
       try_files $uri $uri/ /index.php?$query_string;
       if (!-e $request_filename){
           rewrite ^/(.*) /index.php last;
       }
       # 如果没有以上4行,laravel将只能访问首页,其他页面都是404

    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    # location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    # }

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    location ~ \.php$ {
        root           /var/www/html/public;
        index          index.php index.html;
        # 坑在这里,需将原有的127.0.0.1:9000替换成phpfpm:9000
        fastcgi_pass   127.0.0.1:9000;
        # 坑在这里,需将原有的127.0.0.1:9000替换成phpfpm:9000
        fastcgi_index  index.php;
        # 下面这行也改了  中间的$document_root
        fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include        fastcgi_params;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

      三、制作镜像

      我们在项目根目录创建一个文件名为Dockerfile的文件,构建代码如下

FROM evan886/alpine_nginx_php7.4:v3.14
#复制项目代码至运行目录
ADD default.conf /etc/nginx/conf.d/
ADD .env.example /var/www/html/.env
ADD .  /var/www/html/
#设置权限
RUN chown www-data:www-data -R /var/www/html/storage
RUN chown www-data:www-data -R /var/www/html/bootstrap
#初始化密钥
RUN cd /var/www/html && php artisan key:generate

这里我们使用了nginx+php昨晚基础镜像,然后把Laravel项目代码复制到指定目录,同时将nginx配置文件覆盖原配置。

      四、制作镜像

      我们进入到根目录,然后输入以下命令制作镜像

docker build -t laravel-image .

稍等片刻制作完成。

      五、运行服务

      我们制作完镜像后,输入以下命令运行服务

docker run -d --name laravel -p 8080:80 laravel-image

运行完之后,我们浏览器输入ip:8080访问查看效果,出现如下效果

123.png 这样我们就完成了Laravel镜像制作。

0条评论

发表评论