背景

事情的起因是想在NAS部署一套markdown编辑器,经过比对选中开源的CodiMD软件,CodiMD 是一款开源的、基于 Markdown 的协作笔记和文档编辑工具,专注于团队实时协作和知识共享。通过威联通NAS Docker部署好CodiMD软件后,发现现在威联通NAS 5.x的系统不支持在Container station管理界面增加修改CodiMD Docker的环境变量。

一、CodiMD部署安装

1、通过直接在Container station应用中新建yml文件直接拉取镜像创建CodiMD应用

# yml文件
version: "3"
services:
  database:
    image: postgres:11.6-alpine
    environment:
      - POSTGRES_USER=codimd
      # 这里需要改成自己的密码
      - POSTGRES_PASSWORD=change_password
      - POSTGRES_DB=codimd
    volumes:
      - "database-data:/var/lib/postgresql/data"
    restart: always
  codimd:
    image: hackmdio/hackmd:2.5.4
    environment:
	  # 这里需要改成自己的密码
      - CMD_DB_URL=postgres://codimd:change_password@database/codimd
      - CMD_USECDN=false
    depends_on:
      - database
    ports:
	  # 前面的端口是要映射到外部的端口,后面的端口是docker里面运行的端口,不想用3000端口可以更改前面的端口。
      - "3000:3000"
    volumes:
      - upload-data:/home/hackmd/app/public/uploads
    restart: always
volumes:
  database-data: {}
  upload-data: {}

2、现在就可以通过http://IP:3000端口访问CodiMD image.png

3、现在CodiMD已经部署好了,但是在注册功能(点击登录按钮即可看到)是放开的,任何人都可以注册使用。若是个人使用或小团队使用,应在创建好账号后即刻关闭注册功能,确保安全性,但威联通nas不能在web管理界面修改增加环境变量(如下图),这就需要我们用其他的方法来进行修改。 image.png

二、Docker应用环境变量修改

1、配置ssh登录

  • 首先要打开威联通的ssh连接访问,通过连到命令行进行来修改。 image.png

  • 通过命令行或者shell工具连接到nas后台,然后输入Q回车,然后输入Y回车进入命令行

# 命令行方式
ssh username@nas_ip

2、docker-compose安装

威联通nas本身不带docker-compose,可以通过以下命令来进行安装

sudo curl -SL "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/lib/docker-compose

3、查找docker目录

  • 通过以下命令可以找到docker的目录
docker info | grep 'Docker Root'
  • 可以得到以下结果
/share/CACHEDEV1_DATA/Container/container-station-data/lib/docker
  • 得到上一个目录后,可以往上级目录找可以找到CodiMD的目录
/share/CACHEDEV1_DATA/Container/container-station-data/application/codimd
  • 进入到CodiMD的目录后可以看到有一个docker-compose.yml文件,通过vim docker-compose.yml打开,可以看到内容就是我们安装CodiMD的yml文件内容,然后通过修改docker-compose.yml增加环境变量,然后退出编辑并保存。
codimd:
    image: hackmdio/hackmd:2.5.4
    environment:
	  # 这里需要改成自己的密码
      - CMD_DB_URL=postgres://codimd:change_password@database/codimd
      - CMD_USECDN=false
      # 以下增加的环境变量,可以参考官方文档根据需要来添加
      # 禁止匿名访问
      - CMD_ALLOW_ANONYMOUS=false
      # 禁止注册
      - CMD_ALLOW_REGISTER=false 
      # 禁止邮件注册
      - CMD_ALLOW_EMAIL_REGISTER=false

4、更新配置并重启服务

docker-compose up -d --force-recreate codimd

5、 验证禁止注册配置生效

docker-compose exec codimd sh -c 'echo $CMD_ALLOW_REGISTER'
# 得到输出结果false

6、至此环境变量修改成功。