mindoc 在线文档接口系统的 docker 制作过程
说明: mindoc 是一款在线接口文档编辑系统,百度一下就知道了。github地址:https://github.com/lifei6671/mindoc
本机:ubuntu16.04 + dockerCE2017.12 + mysql5.7 + git2.7.4
由于在使用dockerfile 制作镜像需要跳到 golang.org 网站下点东西,国内网你懂得。我就使用了外国的VPS进行构建
1 git clone代码,在一个空文件夹下执行如下命令
git clone https://github.com/lifei6671/mindoc.git
等待完成。
2 制作镜像前进行设置
进入mindoc 目录,
cd mindoc
添加配置文件到配置目录
# 创建文件 touch conf/app.conf # 向该配置文件添加如下内容 appname = godoc # httpaddr = 127.0.0.1 httpport = 8181 runmode = dev sessionon = true sessionname = mindoc_id copyrequestbody = true #默认Session生成Key的秘钥 beegoserversessionkey=123456 ########Session储存方式############## #以文件方式储存 sessionprovider=file sessionproviderconfig=./logs #以redis方式储存 #sessionprovider=redis #sessionproviderconfig=127.0.0.1:6379 #以memcache方式储存 #sessionprovider=memcache #sessionproviderconfig=127.0.0.1:11211 #以内存方式托管Session #sessionprovider=memory #时区设置 timezone = Asia/Shanghai ####################MySQL 数据库配置########################### #支持MySQL和sqlite3两种数据库,如果是sqlite3 则 db_database 标识数据库的物理目录 db_adapter=mysql db_host=127.0.0.1 db_port=3306 db_database=mindoc_db db_username=root db_password=123456 ####################sqlite3 数据库配置########################### #db_adapter=sqlite3 #db_database=./database/mindoc.db #项目默认封面 cover=/static/images/book.jpg #默认头像 avatar=/static/images/headimgurl.jpg #默认阅读令牌长度 token_size=12 #上传文件的后缀,如果不限制后缀可以设置为 * upload_file_ext=txt|doc|docx|xls|xlsx|ppt|pptx|pdf|7z|rar|jpg|jpeg|png|gif #上传的文件大小限制,如果不填写,默认不限制,单位可以是 GB KB MB upload_file_size=100MB ####################邮件配置###################### #是否启用邮件 enable_mail=false #每小时限制指定邮箱邮件发送次数 mail_number=5 #smtp服务用户名 smtp_user_name=admin@iminho.me #smtp服务器地址 smtp_host=smtp.163.com #smtp密码 smtp_password= #端口号 smtp_port=25 #发送邮件的显示名称 form_user_name=admin@iminho.me #邮件有效期30分钟 mail_expired=30 #加密类型NONE 无认证、SSL 加密、LOGIN 普通用户登录 secure=LOGIN ###############配置PDF生成工具地址################### #wkhtmltopdf=D:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe ###############配置CDN加速################## cdn= cdnjs= cdncss= cdnimg= ################百度地图密钥################# baidumapkey= ################Active Directory/LDAP################ #是否启用ldap ldap_enable=false #ldap主机名 ldap_host=ad.example.com #ldap端口 ldap_port=3268 #ldap内哪个属性作为用户名 ldap_attribute=sAMAccountName #搜索范围 ldap_base=DC=example,DC=com #第一次绑定ldap用户dn ldap_user=CN=ldap helper,OU=example.com,DC=example,DC=com #第一次绑定ldap用户密码 ldap_password=superSecret #自动注册用户角色:0 超级管理员 /1 管理员/ 2 普通用户 ldap_user_role=2 #ldap搜索filter规则,AD服务器: objectClass=User, openldap服务器: objectClass=posixAccount ,也可以定义为其他属性,如: title=mindoc ldap_filter=objectClass=posixAccount ######################缓存配置############################### #是否开启缓存,true 开启/false 不开启 cache=false #缓存方式:memory/memcache/redis/file cache_provider=memory #当配置缓存方式为memory时,内存回收时间,单位是秒 cache_memory_interval=120 #当缓存方式配置为file时,缓存的储存目录 cache_file_path=./runtime/cache/ #缓存文件后缀 cache_file_suffix=.bin #文件缓存目录层级 cache_file_dir_level=2 #文件缓存的默认过期时间 cache_file_expiry=3600 #memcache缓存服务器地址 cache_memcache_host=127.0.0.1:11211 #redis服务器地址 cache_redis_host=127.0.0.1:6379 #redis数据库索引 cache_redis_db=0 #redis服务器密码 cache_redis_password=
其中数据库配置部分根据具体情况进行配置
3 修改Dockerfile 去掉阿里云镜像源(根据具体情况,我使用的是外国的VPS,直接使用官网镜像比较快)
4 在数据库中创建 mindoc_db数据库,使用如下命令
CREATE DATABASE mindoc_db DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_general_ci;
说明:数据库参数 max_allowed_packet 需要设置的比较大,可以通过修改配置文件my.ini 或 my.conf配置文件,然后重启数据库。我是使用
mysql镜像,不知道怎么制作定制化的配置镜像,只是基于官网的 mysql 镜像再进行修改。Dockerfile 如下
FROM mysql:5.7 RUN rm -rf /etc/mysql RUN mkdir /etc/mysql COPY my.conf /etc/mysql/ CMD ["mysqld", "--character-set-server=utf8", "--collation-server=utf8_unicode_ci","--max-allowed-packet=104857600"]
设置 max_allowed_packet = 100M
我的 my.conf 配置文件如下
# CLIENT SECTION # ---------------------------------------------------------------------- # # The following options will be read by MySQL client applications. # Note that only client applications shipped by MySQL are guaranteed # to read this section. If you want your own MySQL client program to # honor these values, you need to specify it as an option during the # MySQL client library initialization. [client] # pipe # socket=0.0 port=3306 [mysql] default-character-set=utf8 # SERVER SECTION # ---------------------------------------------------------------------- # # The following options will be read by the MySQL Server. Make sure that # you have installed the server correctly (see above) so it reads this # file. # # server_type=3 [mysqld] # The TCP/IP Port the MySQL Server will listen on port=3306 max_allowed_packet = 104857600 # The default character set that will be used when a new schema or table is # created and no character set is defined character-set-server=utf8 pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock datadir = /var/lib/mysql #log-error = /var/log/mysql/error.log # By default we only accept connections from localhost #bind-address = 127.0.0.1 # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0
5 进行镜像构建
docker build . -t mindoc
可能需要等一会,根据个人网速。中间会有警告不用管他。到最后成功构建出mindoc 镜像
6 制作出来镜像后就可以启动进行验证了
docker run -p 8181:8181 -d --name=mindoc mindoc:0.9
此时在浏览器中输入 localhost:8181/即可看到登录页面
默认程序会自动初始化一个超级管理员用户:admin 密码:123456 。请登录后重新设置密码。登录后界面如下
注意,因最新的mysql的sql_mode设置的比较严格,需要手动配置下SQL_MODE来禁止full_group检查,可以改MySQL配置文件,或者运行如下SQL语句来修改SQL_MODE:
SET @@global.sql_mode = 'STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';