我们组的软工实训项目是在我的信息检索课设的基础上做一个网站应用。技术栈是 React + FastAPI + 一些简单的机器学习知识。用到的运维技术有 Docker。考虑到组员的网络访问能力,我们决定在 Gitee 上协作。

Gitee

本来选择 Gitee 是因为它在国内,想着访问能快一点。事实上…… 如果只说 git 的速度还不错,但是网站访问速度并不理想,并且操作逻辑繁琐,需要点击的链接多,导致整体使用体验很差。最理想的选择当然是

Docker

一个队友用的是 Windows,一个队友用的 Linux 但是 Docker 的 Installation 有奇怪的权限问题……

Windows

无法启动

首先是 docker-compose 起不来。

ERROR: Windows named pipe error: The system cannot find the file specified. (code: 2)

很多人都遇到过这个问题。这个 Issue 下面 Comments 一大堆,解决方案花样百出。队友表示他看了他晕了。我大概看了一下,觉得 docker-quickstart-terminal 的解决方案最靠谱。这个程序首次启动需要从 GitHub 上抓取二进制镜像。而终端又不是很好代理。搜索得知可以选择手动下载。套路,这类软件搜索找到对应下载路径,手动下好放进去就行了。

启动这个终端就可以用了。

网络不通

Windows 毒瘤

Windows 下 docker 的外界还是虚拟机,所以端口映射不是在 localhost 上

即使做了端口映射,也必须访问 192.168.99.100

React

Dockerlization 容器化

React 工程容器化

这里有一篇可以用来参考的文章。需要注意的是 react-scripts 在近期(2020年)的几个版本导致 docker 需要额外配置才能启动 react 开发服务器。这里 提到 tty: true 或者 stdin_open: true 都可以解决问题。

跨域制裁

因为不熟 JS 所以调了半天 Promise 找不到自己哪里写炸了。有网络请求有返回值,但回调函数就没运行。最后突然想起来跨域了。在 FastAPI 里加了 CORS 中间件,解决。