Docker
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访问查看效果,出现如下效果
这样我们就完成了Laravel镜像制作。
0条评论