这里主要涉及到修改容器内部文件,以及将其保存为一个本地的修改镜像。另外,baidu 可以知道,SeedDMS 对于上传文档的限制,需要修改 php.ini。
我们先去容器看下文件具体在哪里:
$ docker exec -it seeddms /bin/bash
root@c31cfcd7168f:/# cd /
root@c31cfcd7168f:/# find . -name "php.ini"
./usr/local/etc/php/php.ini
root@c31cfcd7168f:/# exit
$ docker cp seeddms:/usr/local/etc/php/php.ini php.ini
然后还是 baidu,看下需要修改 php.ini 的哪些配置:
对于手头的这个镜像,只需要修改后面 3 个就好了
然后将其拷贝回容器,并保存这个修改后的容器为镜像
$ docker cp php.ini seeddms:/usr/local/etc/php/php.ini
$ docker commit seeddms my_seeddms
停止之前的容器,使用新的镜像运行
$ docker stop seeddms
$ docker rm seeddms
$ docker run --name seeddms \
-d \
--restart=always \
-v /HOST/data:/var/www/seeddms/data \
-v /HOST/conf:/var/www/seeddms/conf \
-v /HOST/ext:/var/www/seeddms/www/ext \
-p 80:80 my_seeddms
这样就行了。
先说一个悲伤的故事,之前在百度网盘上面存了不少书籍,包括技术书籍以及小说等等,然后是用 QQ 账号登陆的,后来不记得是登陆后要绑定手机号还是干嘛,绑定完了之后,好多书都不见了!
也许我之前的手机号注册过了吧,然后导致账号合并了之类的,真的搞不懂。当时我是非常后悔没有做备份,因为之前网盘有做活动,永久 2T,怪不得 2T 永远用不完!
就想着搞一个文档管理系统,比如这篇文章介绍的。
因为是个人使用,运行在类似 NAS 一样的小机器上,可以的话,就不需要跑起来类似 MySQL 或者 PostgreSQL 这样的 DB 了。实话说,是真的用不上牛刀。
于是试了一下 SeedDMS,PHP 搭建的,可以只用 SQLite。
后来才发现,我这一个前端开发,搞不懂 PHP 的安装,apache/nginx/openresty 难不倒我,但是 php 的安装难倒我了,你说有个 index.php 可是先要运行起来才能安装,但网站可不是那么简单就能运行的,先搞懂 pear 目录,简写意思是 PHP Extension Application Repository,然后呢,请使用 Composer,谢谢~
我这的魔怔了,无比怀念 go build 可以指定导出不同平台的 binary,然后配置问题不就是 YAML 或者 JSON 搞定,再说,我如果没有提供配置文件,就不能使用 default config running 吗,笑了。
于是就回到了其他的路子上,不再考虑自己源码安装了。试了几个 github 上别人提供的 docker 镜像,最后选了eraelpeha/docker-seeddms
$ docker pull eraelpeha/seeddms
$ docker run --name seeddms -p 8080:80 eraelpeha/seeddms
浏览器访问一下服务端的 8080 端口,应该可以看到提示了,然后就可以通过 8080/install 安装了。
因为后续网站配置,文档啥的还是要保存在 docker 容器之外的目录,所以先 docker cp 容器里面的配置文件出来,待会再挂载本地 volume 上去:
$ docker cp seeddms:/var/www/seeddms/data /HOST/data
$ docker cp seeddms:/var/www/seeddms/conf /HOST/conf
$ docker cp seeddms:/var/www/seeddms/www/ext /HOST/ext
$ chmod -R 777 /HOST/data /HOST/conf /HOST/ext
上面也将 data 目录配置到外面了。
使用 docker ps -a 查看运行的 image,stop 后,rm 掉,再运行一下看看,这里配置为启动 background 加载了,然后设置为 80 端口
$ docker run --name seeddms \
-d \
--restart=always \
-v /HOST/data:/var/www/seeddms/data \
-v /HOST/conf:/var/www/seeddms/conf \
-v /HOST/ext:/var/www/seeddms/www/ext \
-p 80:80 eraelpeha/seeddms
最后,设置 docker 开机启动吧
$ systemctl start docker
重启后,发现文档服务起来了,之前的设置也都还有效,这样就配置完了。
搞了一个下午,就感觉 php 太坑了,跟 go 的起步差了十万八千里。