这里只有alpine支持php7的版本最高的是 3.15
不想从头开始搭建的,直接拉取我建立好的项目 可以的话帮我点个星星
https://hub.docker.com/r/mymoyi/fastadmin
直接拉到文章最下面有一键部署命令
vim编辑器 常用命令 或快捷键
// 命令模式o 插入到光标后的新一行i 插入到光标前面a 插入到光标后// 末行模式:wq 更新并且保存:q! 强制退出:1,$d 清空文件// 上下翻页 control + f / bctrl + f / b
// 创建一个 最基础的容器docker run -it --name fastadmin -p 80:80 -p 443:443 alpine:3.15
以下命令都是在容器内执行
// 可用软件包参考 如果缺少某个环境可以去这里搜一下然后加进去// https://pkgs.alpinelinux.org/packages// 安装进程守护以及 nginx 跟 PHP库 后续存在的php环境问题再增加 这里应该需要一点时间apk add supervisor nginx php7 php7-fpm php7-json php7-mysqli php7-pdo_mysql php-gd php7-opcache php7-ctype php7-pdo_sqlite php7-session php7-curl php7-pdo_pgsql php7-sqlite3 php7-mbstring php7-tokenizer php7-pecl-redis // 新建项目目录以及运行目录mkdir /appmkdir /app/public// 新建一个php文件用于测试vi /app/public/index.php---------内容------------<?php phpinfo(); ?>------------------------// 新建进程守护配置目录mkdir /etc/supervisor.d// 编辑一个进程守护配置vi /etc/supervisor.d/moyi.ini// ------------内容-------------[supervisord]nodaemon=true[program:php-fpm]command=php-fpm7 -F[program:nginx]command=nginx -g "daemon off;"// --------------------------------// 这里我们吧fpm默认调整成 unix 模式比端口模式快一点vi /etc/php7/php-fpm.d/www.conf -------------找到端口那一句注释掉调整如下-----我这里是在第36行------;listen = 127.0.0.1:9000 listen = /tmp/php-fpm.sock listen.backlog = 8192 listen.allowed_clients = 127.0.0.1 listen.mode = 0666 listen.owner = nginx listen.group = nginx ---------------------------------------------// 重新配置一下nginx的配置文件vi /etc/nginx/http.d/default.conf ------------配置我直接宝塔面板里抄下来的按需配置--------------server { listen 80; server_name b1.com; index index.php index.html index.htm default.php default.htm default.html; root /app/public; location ~* (runtime|application)/ { return 403; } location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php?s=$1 last; break; } } #.............................. location ~ ^/(.user.ini|.htaccess|.git|.env|.svn|.project|LICENSE|README.md) { return 404; } #............................................. if ( $uri ~ "^/.well-known/.*.(php|jsp|py|js|css|lua|ts|go|zip|tar.gz|rar|7z|sql|bak)$" ) { return 403; } location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; error_log /dev/null; access_log /dev/null; } location ~ .*.(js|css)?$ { expires 12h; error_log /dev/null; access_log /dev/null; } location ~ [^/].php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE $content_type; fastcgi_param CONTENT_LENGTH $content_length; fastcgi_param SCRIPT_NAME $fastcgi_script_name; fastcgi_param REQUEST_URI $request_uri; fastcgi_param DOCUMENT_URI $document_uri; fastcgi_param DOCUMENT_ROOT $document_root; fastcgi_param SERVER_PROTOCOL $server_protocol; fastcgi_param REQUEST_SCHEME $scheme; fastcgi_param HTTPS $https if_not_empty; fastcgi_param GATEWAY_INTERFACE CGI/1.1; fastcgi_param SERVER_SOFTWARE nginx/$nginx_version; fastcgi_param REMOTE_ADDR $remote_addr; fastcgi_param REMOTE_PORT $remote_port; fastcgi_param SERVER_ADDR $server_addr; fastcgi_param SERVER_PORT $server_port; fastcgi_param SERVER_NAME $server_name; # PHP only, required if PHP was built with --enable-force-cgi-redirect fastcgi_param REDIRECT_STATUS 200; set $real_script_name $fastcgi_script_name; if ($fastcgi_script_name ~ "^(.+?.php)(/.+)$" ) { set $real_script_name $1; set $path_info $2; } fastcgi_param SCRIPT_FILENAME $document_root$real_script_name; fastcgi_param SCRIPT_NAME $real_script_name; fastcgi_param PATH_INFO $path_info; } access_log /app/null; error_log /app/b1.com.error.log;}-------------------------------------------------// 启动一下两个运行环境 访问80端口 就可以看看是否// php-fpm7// nginx// 直接启动守护进程 两个环境就自启动supervisord// 这里执行会出一个UserWarning警告 此警告表明您以 root 用户身份运行 supervisord,并且它正在默认位置(包括其当前工作目录)中搜索其配置文件。这可能不是一个好的安全实践,因为如果有恶意用户能够在其中一个默认位置放置一个恶意的配置文件,那么 supervisord 将会加载并执行它。为了避免这个问题并提高安全性,建议您使用 -c 参数明确指定配置文件的绝对路径。// 我不接受警告~ 反正是在容器里// 然后访问本机的80端口 这里上面一开始run我是映射 如何进入了PHP Version 7.4.33 的信息界面 那就是恭喜你完成容器搭建了
下一步 我们需要把容器打包成镜像 方便部署
// 暂停容器docker stop fastadmin// 打包容器docker commit fastadmin fastadmin-full// 查看镜像列表这里我看到容器整个 97.1MB 大小 还是不错的了docker image ls
现在需要给容器添加构造一下启动命令
// 新建一个构造文件夹mkdir fastadmin_build// 进入构造文件夹cd fastadmin_build// 编辑一个容器配置文件vi Dockerfile----------内容很简单就是构造fastadmin-full默认启动守护进程-----------FROM fastadmin-fullCMD ["/usr/bin/supervisord"]----------------------------------------------------------// 然后打包就完成了docker build -t fastadmin74 .
这里比如 /moyi/app 目录下是 fastadmin 的项目主目录 直接用容器启动一个
这里记得把目录权限都给了,不然会提示权限错误
docker run -it -d -p 80:80 -v /moyi/app:/app fastadmin74
恭喜你看到这里解锁了如何从alpine开始新建一个fastadmin容器并且打包运行
这里我同时打包了一个包含fastadmin项目的容器,大家可以直接一键运行 或者映射到自己项目
docker run -it -d -p 80:80 mymoyi/fastadmin
没想到打包之后 只有 47.74 MB 很不错!
希望以上内容对你有所帮助!如果还有其他问题,请随时提问。 各类知识收集 拥有多年CMS企业建站经验,对 iCMS, Fastadmin, ClassCMS, LeCMS, PbootCMS, PHPCMS, 易优CMS, YzmCMS, 讯睿CMS, 极致CMS, Wordpress, HkCMS, YznCMS, WellCMS, ThinkCMF, 等各类cms的相互转化,程序开发,网站制作,bug修复,程序杀毒,插件定制都可以提供最佳解决方案。