
jmessenger/maint-autobuild本镜像基于GitHub仓库jlm/maint构建,将原基于Excel工作簿的802.1维护数据库转换为Web应用。原Excel工作簿依赖复杂公式生成静态HTML,维护困难且易出错,本Web应用提供更便捷的管理方式,支持数据导入、用户认证和权限管理。
在Docker主机上创建持久化存储目录并配置权限:
bashsudo mkdir -p /srv/docker/postgresql/data sudo chmod -R go-rwx /srv sudo chown 999.root /srv/docker/postgresql/data
复制仓库中的example-deploy-docker-compose.yml为deploy-docker-compose.yml,并根据需求编辑配置:
yamlversion: '3' services: db: image: postgres:9.6 volumes: - /srv/docker/postgresql/data:/var/lib/postgresql/data environment: - POSTGRES_USER=maintuser - POSTGRES_PASSWORD=yourpassword - POSTGRES_DB=maint_production restart: always web: image: yourusername/maint_web:latest depends_on: - db environment: - DATABASE_URL=postgres://maintuser:yourpassword@db:5432/maint_production - SECRET_KEY_BASE=your_generated_secret_key - DEVISE_PEPPER=your_generated_pepper - COMMITTEE=Your Committee Name - VIRTUAL_HOST=maint.example.com # 仅当使用nginx-proxy时需要 - LETSENCRYPT_HOST=maint.example.com # 仅当使用letsencrypt时需要 - LETSENCRYPT_EMAIL=*** # 仅当使用letsencrypt时需要 restart: always
bash# 前台运行(测试用) docker-compose -f deploy-docker-compose.yml up # 后台运行(生产环境) docker-compose -f deploy-docker-compose.yml up -d
应用初始化需要几分钟时间,完成后可通过http://localhost:80访问。
| 环境变量 | 说明 |
|---|---|
POSTGRES_USER | PostgreSQL数据库用户名,需与web服务中的DATABASE_URL对应 |
POSTGRES_PASSWORD | PostgreSQL数据库密码,需与web服务中的DATABASE_URL对应 |
POSTGRES_DB | 数据库名称 |
SECRET_KEY_BASE | Rails应用密钥,可通过openssl rand -hex 64生成 |
DEVISE_PEPPER | Devise认证密钥,可通过openssl rand -hex 64生成 |
COMMITTEE | 网站标题配置 |
VIRTUAL_HOST | 虚拟主机名(使用nginx-proxy时需要) |
LETSENCRYPT_HOST | Let's Encrypt证书域名(使用letsencrypt时需要) |
LETSENCRYPT_EMAIL | Let's Encrypt联系人***(使用letsencrypt时需要) |
若需实现HTTPS和多应用代理,可使用jwilder/nginx-proxy和jrcs/letsencrypt-nginx-proxy-companion:
bashsudo mkdir /web/nginx-proxy sudo chown $USER /web/nginx-proxy curl [***] > /web/nginx-proxy/nginx.tmpl # 应用补丁以避免Let's Encrypt验证文件重定向 wget -Onginx.tmpl.patch [***] patch /web/nginx-proxy/nginx.tmpl < nginx.tmpl.patch sudo docker network create nginx-proxy
bashsudo docker run -d -p 80:80 -p 443:443 --name nginx-proxy --net nginx-proxy --restart=always \ -v /web/nginx-proxy:/etc/nginx/certs:ro \ -v /etc/nginx/vhost.d \ -v /usr/share/nginx/html \ -v /var/run/docker.sock:/tmp/docker.sock:ro \ --label com.github.jrcs.letsencrypt_nginx_proxy_companion.nginx_proxy jwilder/nginx-proxy sudo docker run -d --name nginx-letsencrypt --net nginx-proxy --restart=always \ -v /web/nginx-proxy:/etc/nginx/certs:rw \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ --volumes-from nginx-proxy jrcs/letsencrypt-nginx-proxy-companion
确保deploy-docker-compose.yml中配置了VIRTUAL_HOST、LETSENCRYPT_HOST和LETSENCRYPT_EMAIL,然后重启应用:
bashdocker-compose -f deploy-docker-compose.yml up -d
导入Excel文件前需进行预处理,以避免导入错误:
文件->信息->检查工作簿->文档属性和个人信息移除非法字符首次使用需手动配置管理员权限:
bashdocker-compose -f deploy-docker-compose.yml exec web rails console
rubyu = User.where(*** "***").first u.admin = true u.save


manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务