开源看板wekan docker 源码构建
环境搭建
- 首先在centos中安装 docker 和 docker-compose
由于yum 暂时只有docker 没有docker-compose 所以可以参考 菜鸟教程 docker安装 docker 和 docker-compose
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。
简单来说:通过docker-compose.yml的指引,可以将多个容器按规则作为一个应用一起启动(compose 直译本身就是:组成)
- 通过源码构建wekan 需要通过git在github上拉取wekan源码,所以需要安装git,这里直接通过yum安装
yum install git
获取wekan代码
git clone https://github.com/wekan/wekan
wekan部署配置
修改docker-compose.yml配置文件(配置组合 wekan 和 wekan-db 的docker容器)
# 进入git拉取的wekan代码
cd wekan
# 修改docker-compose.yml (参数含义可以看docker compose的文档)
vim docker-compose.yml
修改wekan的访问端口
services:
...
wekan:
...
# wekan的镜像,通过修改版本号可以切换版本和版本升级(切换版本前注意数据备份)
image: wekanteam/wekan:v4.96
networks:
- wekan-tier
# 将宿主机的80端口映射到wekan容器的8080端口,这样就可以通过:**宿主机的ip:80** 直接访问wekan (这里要理解docker容器和虚拟机作用相似)
ports:
- 80:8080
environment:
# 访问wekan的根地址,不修改只能在本机访问 ( 官方wiki原文地址: https://github.com/wekan/wekan/wiki/Windows Windows >> a) Bundle with Windows Node+MongoDB >> 6.Download start-wekan.bat to your bundle directory. Default settins are: ROOT_URL=http://localhost and PORT=80, so it works only in local compatible browser. You can edit ROOT_URL to be or http://YOUR-IP-ADDRESS so it works on local network with http://YOUR-IP-ADDRESS. 虽然是windows环境下的安装介绍,但是参数作用猜想应该是一致的)
- ROOT_URL=http://your ip address
- MALL_URL=smtp:邮箱账号:邮箱密码@邮件服务器地址:邮件服务器smtp端口号/?ignoreTLS=true&tls={rejectUnauthorized:false}
# qq邮箱示例如下(需要到qq邮箱设置中开通smtp服务,并获取密码)
# - MAIL_URL=smtp://8888888@qq.com:password@smtp.qq.com:465/?ignoreTLS=true&tls={rejectUnauthorized:false}
给mongodb数据库的容器wekan-db容器设置端口映射,
services:
...
wekandb:
...
networks:
- wekan-tier
# wekan-db默认没有ports,需要在networks:- wekan-tier下方添加 ports: - 27017:27017 意思是将宿主机的27016端口映射给wekan-db的27017端口,这样远程数据库客户端就可以通过:**宿主机:27016** 连接到容器中的mongodb
ports:
- 27016:27017
接下来就可以通过docker 构建 wekan了,以下来自官方wiki
Then you can build Wekan with
docker-compose up -d --build
Example for latest Wekan, port 2000 to Docker Wekan internal port 8080:
docker run -d --restart=always --name wekan-db mongo:4
docker run -d --restart=always --name wekan --link "wekan-db:db" -e "WITH_API=true" -e "MONGO_URL=mongodb://wekan-db:27017/wekan" -e "ROOT_URL=http://192.168.1.200:80" -p 80:8080 quay.io/wekan/wekan
至此,wekan部署完成,输入地址即可访问wekan
如果wekan 已经构建需要修改 wekan-db(mongodb)容器的端口映射,使远程客户端可以连接,也可以参照上面的方法直接修改docker-compose.yml 的ports,但是此时需要重启docker后然后执行
# 先重启docker
systemctl restart docker
# 再启动应用
docker-compose up -d
以上解决办法经过实践,mongodb中数据不会丢失(如果mongodb 可能存在 版本升级的情况一定要做数据备份)
如果不重启docker直接重启应用可能会报如下错误
ERROR: for wekandb Cannot start service wekandb: driver failed programming external connectivity on endpoint wekan-db (60fb3e1eac0a6bc7f259b586b8c01335a01e7efb9632ca95d01abcea8a681ee7): (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 27017 -j DNAT --to-destination 172.18.0.2:27017 ! -i br-c830cc6c5192: iptables: No chain/target/match by that name.
(exit status 1))
ERROR: Encountered errors while bringing up the project.
[root@dlike wekan]# docker stop wekan-db
wekan-db
[root@dlike wekan]# docker-compose up -d
Building with native build. Learn about native build in Compose here: https://docs.docker.com/go/compose-native-build/
Removing wekan-db
Recreating 50f36e859d7c_wekan-db ...
Recreating 50f36e859d7c_wekan-db ... error
参考