docker 部署 dujiaoka 独角数卡自动售货系统 支持 X86 和 ARM 架构

前言

很早就想部署一套自己的发卡自动售货系统,研究了很久发现独角数卡相对更加成熟好用,可是折腾技术三年多最怕的就是phpLaravel之类的语言和框架,各种权限,守护之类配置麻烦,加上如果跑在docker里更加头疼,只能先尝试硬装了。

按照官方教程在LNMP.org环境下一步步的按照,涉及到需要修改php,composer,supoervisor,redismysql各种依赖,最终算是完美安装成功,使用上各方面都没问题,就是感觉部署太麻烦。于是又找到某大佬制作的docker版本 Apocalypsor/dujiaoka-docker 经过测试也很完美,部署和维护实在是方便。

但是发现基础镜像只支持X86架构,现在甲骨文 ARM 服务器这么火,完美党无法忍受,于是又经过一天的折腾解决了ARM64 架构的基础镜像,所有就有了本教程。

竟然瞎聊了这么多,废话不多说,首先依次感谢以下开发者,docker 制作者的无私分享。

assimon/dujiaoka
Apocalypsor/dujiaoka-docker

部署

项目地址

stilleshan/dockerfiles

demo 示例

https://shop.ioiox.com

准备主目录

创建一个dujiaoka主目录用于存放所有相关配置,数据,数据库和缓存文件。

mkdir dujiaoka && cd dujiaoka
# 创建主目录
mkdir storage uploads
chmod -R 777 storage uploads
# 创建数据目录用于挂载

访问项目地址下载env.confdocker-compose.yml到上述的dujiaoka目录中。

wget https://raw.githubusercontent.com/stilleshan/dockerfiles/main/dujiaoka/env.conf
wget https://raw.githubusercontent.com/stilleshan/dockerfiles/main/dujiaoka/docker-compose.yml
chmod -R 777 env.conf
# 重要步骤

配置 nginx 反向代理

参考domian.conf修改域名和证书路径。
由于 ngixn 安装不同,可能具体配置和路径有所不同,但必需参考以下location ^~ /中的相关配置。

    location ^~ / {proxy_pass http://127.0.0.1:56789;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header REMOTE-HOST $remote_addr;proxy_set_header X-Forwarded-Proto  $scheme;add_header X-Cache $upstream_cache_status;proxy_set_header Accept-Encoding "";sub_filter "http://" "https://";sub_filter_once off;}

启动容器

修改docker-compose.yml中的MySQL密码,首次启动:

docker-compose up -d

首次启动后,会自动生成mysqlredis的数据目录。

网页安装

访问配置好的域名进行安装:

  • MySQL的地址改为db
  • MySQL的用户名改为dujiaoka
  • Redis的地址改为redis
  • 填写网站名称
  • 填写网站url地址(例如https://shop.ioiox.com)

点击安装,并成功安装,先修改其他参数后在进行登录使用

停止容器

docker-compose down

docker-compose.yml中的INSTALL改为false

env.conf中的APP_DEBUG改为false
此时可以看到env.conf中的相关配置已经自动变为安装时填写的参数

再次启动容器

docker-compose up -d
# 再次启动开始使用


 

完成部署

自此已完成安装部署,访问域名开始使用:

  • 容器内含有php,composer,redis,supervisor进程守护,任意设置都会自动生效.完全无需任何其他操作.
  • 所有配置,数据,缓存,数据库都存储在整个dujiaoka目录中,定期备份即可。
  • 如需迁移服务器,仅需打包本目录到新服务器,执行上述所有chmod 777的权限命令,再次docker-compose up -d即可恢复上线。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/596146.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AttributeError: ‘Text‘ object has no property ‘FontSize‘

在学习《机器学习理论与实践》——1 机器学习编程语言基础中,使用Matplotlib画图(在坐标轴或绘图区显示中文)时,产生AttributeError: Text object has no property FontSize 错误解决。 AttributeError: Text object has no prop…

公开课学习——仿抖音直播平台

文章目录 直播抖音的直播原理Java继承直播客户端工具: ffmpeg客户端和网页集成CDN网络——性能提升关键——边缘计算 实时聊天——IM系统怎么实现?——websocketIM系统消息如何转发?直播场景IM系统是什么样子? 直播 抖音的直播原…

动规训练4

目录 一、买股票的最佳实际含冷冻期 1、题目解析 2、算法原理 a状态表示方程 b状态转移方程 c初始化 d填表顺序 e返回值 3、代码 4、感想 二、买股票的最佳时机函手续费 1、题目解析 2、算法原理 a状态表示方程 b状态转移方程 c初始化 d填表顺序 e返回值 3、…

LRU的原理与实现(java)

介绍 LRU的英文全称为Least Recently Used,即最近最少使用。它是一种内存数据淘汰算法,当添加想要添加数据而内存不足时,它会优先将最近一段时间内使用最少的数据淘汰掉,再将数据添加进来。 原理 LRU的原理在介绍中就已经基本说…

继电器线圈两端为什么要反向并联二极管

原理描述: 电感的特点:穿过电感的电流不会突然变化,也就是说变化的电流在电感上面会产生感应电动势。 感应电动势的作用:阻碍电流的变化。 三极管断开之前,电流是穿过线圈,原来的电流是从上往下流动&#…

【C++】探索C++中的类与对象(下)---深入理解C++中的关键概念与应用

​​ 🌱博客主页:青竹雾色间. 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 ✨人生如寄,多忧何为 ✨ 在C编程中,有许多重要的概念和特性,包括构造函数、explicit关键字、静态成员、友元以及内部类…

【黑马头条】-day05延迟队列文章发布审核-Redis-zSet实现延迟队列-Feign远程调用

文章目录 昨日回顾今日内容1 延迟任务1.1 概述1.2 技术对比1.2.1 DelayQueue1.2.2 RabbitMQ1.2.3 Redis实现1.2.4 总结 2 redis实现延迟任务2.0 实现思路2.1 思考2.2 初步配置实现2.2.1 导入heima-leadnews-schedule模块2.2.2 在Nacos注册配置管理leadnews-schedule2.2.3 导入表…

【Leetcode】1. 两数之和

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接🔗 给定一个整数数组 n u m s nums nums 和一个整数目标值 t a r g e t target target,请你在该数组中找出 和为目标值 t a r g e t target target 的那 两个 整数&…

序列超图的下一项推荐 笔记

1 Title Next-item Recommendation with Sequential Hypergraphs(Jianling Wang、Kaize Ding、Liangjie Hong、Huan Liu、James Caverlee)【SIGIR 2020】 2 Conclusion This study explores the dynamic meaning of items in realworld scenarios and p…

JAVA IO流学习

File类: File类是java.io包中很重要的一个类 File类的对象可以代表一个文件或者目录,可以修改文件大小、文件最后修改日期、文件名等 File对象不能操作文件的具体数据,即不能对文件进行读和写的操作 File的构造方法: File&…

并查集学习(836. 合并集合 + 837. 连通块中点的数量)

//得先加集合个数再合并!!!!!!!!! 核心代码: int find(int x){//返回父节点if(x ! p[x]) {p[x] find(p[x]);//路径压缩 } //孩子不等于爸爸,就…

Pytorch转onnx

pytorch 转 onnx 模型需要函数 torch.onnx.export。 def export(model: Union[torch.nn.Module, torch.jit.ScriptModule, torch.jit.ScriptFunction],args: Union[Tuple[Any, ...], torch.Tensor],f: Union[str, io.BytesIO],export_params: bool True,verbose: bool False…