Docker: 软件应用工具

使用Docker运行开箱即用的软件与工具

您可以使用Docker,快速部署启动软件应用,在容器中,您可以直接使用连接串访问部署于宿主机上的PostgreSQL/Redis数据库。

  • PgAdmin4 : 一个用于管理PostgreSQL数据库实例的GUI工具
  • PGWeb:一个自动根据PG数据库模式生成后端API服务的工具
  • PostgREST:一个自动根据PG数据库模式生成后端API服务的工具
  • ByteBase : 一个用于进行PostgreSQL模式变更的GUI工具
  • Jupyter Lab:一个开箱即用的数据分析与处理Python实验环境

您也可以用Docker拉起一些开箱即用的开源软件服务:

  • Gitea:轻量化代码托管服务
  • Minio:S3兼容的简单对象存储服务
  • Wiki.js:功能完善的私人维基站点
  • Casdoor:单点SSO解决方案

您也可以使用Docker执行一些随用随抛的命令工具,例如:

  • SchemaSPY:生成数据库模式的详细可视化报表
  • Pgbadger:生成数据库日志报表

您也可以用Docker拉起一些开箱即用的开源软件服务:

PGADMIN

PgAdmin4 是一个实用的PostgreSQL管理工具,执行以下命令可在管理节点拉起 pgadmin服务:

  1. cd ~/pigsty/app/pgadmin ; docker-compose up -d

默认分配 8885 端口,使用域名: http://adm.pigsty 访问, Demo:http://adm.pigsty.cc。

默认用户名:admin@pigsty.cc,密码:pigsty

PGWeb客户端工具

PGWeb是一款基于浏览器的PG客户端工具,使用以下命令,在元节点上拉起PGWEB服务,默认为主机8886端口。可使用域名: http://cli.pigsty 访问,公开Demo:http://cli.pigsty.cc。

  1. # docker stop pgweb; docker rm pgweb
  2. docker run --init --name pgweb --restart always --detach --publish 8886:8081 sosedoff/pgweb

用户需要自行填写数据库连接串,例如默认CMDB的连接串:

postgres://dbuser_dba:DBUser.DBA@10.10.10.10:5432/meta?sslmode=disable

ByteBase

ByteBase是一个进行数据库模式变更的工具,以下命令将在元节点 8887 端口启动一个ByteBase。

  1. mkdir -p /data/bytebase/data;
  2. docker run --init --name bytebase --restart always --detach --publish 8887:8887 --volume /data/bytebase/data:/var/opt/bytebase \
  3. bytebase/bytebase:1.0.4 --data /var/opt/bytebase --host http://ddl.pigsty --port 8887

访问 http://10.10.10.10:8887/http://ddl.pigsty 即可使用 ByteBase,您需要依次创建项目、环境、实例、数据库,即可开始进行模式变更。 公开Demo地址: http://ddl.pigsty.cc

PostgREST

PostgREST是一个自动根据 PostgreSQL 数据库模式生成 REST API的二进制组件。

例如,以下命令将使用docker拉起 postgrest (本地 8884 端口,使用默认管理员用户,暴露Pigsty CMDB模式)

  1. docker run --init --name postgrest --restart always --detach --publish 8884:8081 postgrest/postgrest

访问 http://10.10.10.10:8884 会展示所有自动生成API的定义,并自动使用 Swagger Editor 暴露API文档。

如果您想要进行增删改查,设计更精细的权限控制,请参考 Tutorial 1 - The Golden Key,生成一个签名JWT。

数据分析环境:Jupyter

Jupyter Lab 是一站式数据分析环境,下列命令将在 8887 端口启动一个Jupyter Server.

  1. docker run -it --restart always --detach --name jupyter -p 8888:8888 -v "${PWD}":/tmp/notebook jupyter/scipy-notebook
  2. docker logs jupyter # 打印日志,获取登陆的Token

访问 http://10.10.10.10:8888/ 即可使用 JupyterLab,(需要填入自动生成的Token)。

您也可以使用 infra-jupyter.yml 在管理节点裸机上启用Jupyter Notebook。

样例:数据库模式报表SchemaSPY

使用以下docker生成数据库模式报表,以CMDB为例:

  1. docker run -v /www/schema/pg-meta/meta/pigsty:/output andrewjones/schemaspy-postgres:latest -host 10.10.10.10 -port 5432 -u dbuser_dba -p DBUser.DBA -db meta -s pigsty

然后访问 http://pigsty/schema/pg-meta/meta/pigsty 即可访问Schema报表

样例:开源代码仓库:Gitlab

请参考Gitlab Docker部署文档 完成Docker部署。

  1. export GITLAB_HOME=/data/gitlab
  2. sudo docker run --detach \
  3. --hostname gitlab.example.com \
  4. --publish 443:443 --publish 80:80 --publish 23:22 \
  5. --name gitlab \
  6. --restart always \
  7. --volume $GITLAB_HOME/config:/etc/gitlab \
  8. --volume $GITLAB_HOME/logs:/var/log/gitlab \
  9. --volume $GITLAB_HOME/data:/var/opt/gitlab \
  10. --shm-size 256m \
  11. gitlab/gitlab-ee:latest
  12. sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password

样例:开源技术论坛:Discourse

搭建开源论坛Discourse,需要调整配置 app.yml ,重点是SMTP部分的配置

Discourse配置样例

  1. templates:
  2. - "templates/web.china.template.yml"
  3. - "templates/postgres.template.yml"
  4. - "templates/redis.template.yml"
  5. - "templates/web.template.yml"
  6. - "templates/web.ratelimited.template.yml"
  7. ## Uncomment these two lines if you wish to add Lets Encrypt (https)
  8. # - "templates/web.ssl.template.yml"
  9. # - "templates/web.letsencrypt.ssl.template.yml"
  10. expose:
  11. - "80:80" # http
  12. - "443:443" # https
  13. params:
  14. db_default_text_search_config: "pg_catalog.english"
  15. db_shared_buffers: "768MB"
  16. env:
  17. LC_ALL: en_US.UTF-8
  18. LANG: en_US.UTF-8
  19. LANGUAGE: en_US.UTF-8
  20. EMBER_CLI_PROD_ASSETS: 1
  21. UNICORN_WORKERS: 4
  22. DISCOURSE_HOSTNAME: forum.pigsty
  23. DISCOURSE_DEVELOPER_EMAILS: 'fengruohang@outlook.com,rh@vonng.com'
  24. DISCOURSE_SMTP_ENABLE_START_TLS: false
  25. DISCOURSE_SMTP_AUTHENTICATION: login
  26. DISCOURSE_SMTP_OPENSSL_VERIFY_MODE: none
  27. DISCOURSE_SMTP_ADDRESS: smtpdm.server.address
  28. DISCOURSE_SMTP_PORT: 80
  29. DISCOURSE_SMTP_USER_NAME: no_reply@mail.pigsty.cc
  30. DISCOURSE_SMTP_PASSWORD: "<password>"
  31. DISCOURSE_SMTP_DOMAIN: mail.pigsty.cc
  32. volumes:
  33. - volume:
  34. host: /var/discourse/shared/standalone
  35. guest: /shared
  36. - volume:
  37. host: /var/discourse/shared/standalone/log/var-log
  38. guest: /var/log
  39. hooks:
  40. after_code:
  41. - exec:
  42. cd: $home/plugins
  43. cmd:
  44. - git clone https://github.com/discourse/docker_manager.git
  45. run:
  46. - exec: echo "Beginning of custom commands"
  47. # - exec: rails r "SiteSetting.notification_email='no_reply@mail.pigsty.cc'"
  48. - exec: echo "End of custom commands"

然后,执行以下命令,拉起Discourse即可。

  1. ./launcher rebuild app

使用PGAdmin4进行数据库管理

使用Docker拉起PgAdmin4,并加载Pigsty服务器列表

使用Gitea搭建您自己的代码托管服务

使用Docker拉起Gitea,并使用Pigsty的PG作为外部的元数据库

使用Wiki.js搭建百科网站

使用Docker拉起Wiki,并使用Pigsty的PG作为持久数据存储

使用Minio存储本地对象与备份

使用Docker拉起Minio,即刻拥有你自己的对象存储服务。

使用ByteBase对PG模式做版本控制

使用Docker拉起Bytebase,对PG的模式进行版本化管理

使用PGWeb从网页浏览PostgreSQL数据

使用Docker拉起PGWEB,以便从浏览器进行小批量在线数据查询

使用PostgREST自动生成RESTful API

使用Docker拉起PostgREST,自动根据PostgreSQL模式生成后端REST API

KONG API Gateway

Launch kong with docker and use postgres as metadb

最后修改 2022-06-05: add app docs for wiki.js (820bfc3)