提示:测试环境,仅供参考。
背景说明
domino开源项目是一个与airflow结合使用的工具,可将airflow内容进行图形化展示。代码仓库是https://github.com/Tauffer-Consulting/domino
问题现象
部署domino开源项目时,参考文档 https://docs.domino-workflows.io/run_domino/run_locally_compose。部署结束后,访问IP:3000,登录时,右上角提示网络错误。如下图所示,
查看后台信息,发现异常如下图所示,
问题根因是domino源码的前端组件写死localhost,访问者访问不到localhost指代的资源,最终导致访问异常。
解决方法
找一台可访问海外的云主机。 克隆代码
root@VM-8-10-ubuntu Fri Sep 26 [11:24:17] : /opt/
# git clone https://github.com/Tauffer-Consulting/domino.git
修改配置文件,打包容器镜像,
server_name *;解决仅限localhost访问问题。
API_URL 可直接写容器domino-rest所在宿主机的IP地址,也可写0.0.0.0,或者服务器的EIP及端口,也可等部署时再指定参数做替换。
root@VM-8-10-ubuntu Fri Sep 26 [11:24:17] : /opt/domino/frontend
# cat nginx.conf
server {
listen 80;
server_name *;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
}
root@VM-8-10-ubuntu Fri Sep 26 [13:08:04] : /opt/domino/frontend
# cat .env.production
# These values are placeholders
DOMINO_DEPLOY_MODE="local-compose"
API_URL="http://0.0.0.0:8000"
root@VM-8-10-ubuntu Fri Sep 26 [13:08:04] : /opt/domino/frontend
# cp Dockerfile.prod Dockerfile
root@VM-8-10-ubuntu Fri Sep 26 [13:08:04] : /opt/domino/frontend
# docker build -t zhuyifeiruichuang/domino-frontend:dev1 ./
root@VM-8-10-ubuntu Fri Sep 26 [13:08:04] : /opt/domino/frontend
# docker push zhuyifeiruichuang/domino-frontend:dev1
配置启动容器的脚本,执行脚本,
172.16.0.47是容器domino-rest所在宿主机的IP地址。若想EIP访问,应填EIP和端口。若配置了云平台端口转发,端口应填8000转发后的云平台的端口。
root@i-q0kde6wp:/opt/domino# cat start_domino_dev1.sh
#!/bin/bash
# start custom domino front server
docker stop domino_frontend_dev1
docker rm domino_frontend_dev1
docker run -d \
--name domino_frontend_dev1 \
--restart unless-stopped \
-p 3001:80 \
-e DOMINO_DEPLOY_MODE=local-compose \
-e API_URL=http://172.16.0.47:8000 \
--pull always zhuyifeiruichuang/domino-frontend:dev1
可浏览器访问IP:3001验证。此时登录和注册功能均可使用。
domino的特性之一,当web界面访问IP:3000时,若进行登录或注册,页面会自动跳转IP:8000,若访问者无法访问domino-reset容器所在网络,登录或注册均会失败。这种代码特点导致API_URL不能填写容器名称。访问者通过EIP访问时,无法跳转到私网IP。
若想EIP访问成功,则应将172.16.0.47:8000 替换为EIP和端口。若存在云平台的端口转发,则应填写EIP和转发后的端口,内部端口是8000,转发后的外部端口是你配置在云平台的端口。
补充
domino部署仅支持特定工具部署,该工具会自动使用默认配置文件覆盖已修改的配置文件。