Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Yuan Zhixiang
c-backend-docker
Commits
db28f443
Commit
db28f443
authored
Apr 21, 2024
by
Yuan Zhixiang
Browse files
更新操作步骤
parent
51bde917
Changes
1
Show whitespace changes
Inline
Side-by-side
README.md
View file @
db28f443
#
#
构建单个基础镜像
#
概览
核心分析器不支持多线程,Web后端也没有添加多线程支持
本仓库分为两个部分 c-backend ,c-redis 。
构建镜像
c-backend 是
[
c-render-vue
](
http://vlab.csu.edu.cn/git/YuanZhixiang/c-render-vue
)
的 Web 后端。
c-backend 内的核心分析器不支持多线程,作为 Web 后端也没有添加多线程支持。
可以单独运行一个 c-backend 容器用于测试。在实际使用中,建议使用 Docker Swarm 部署集群来支持多线程,同时可搭配 c-redis 实现缓存功能。
# 部署
构建 c-backend 镜像(/c-backend目录下):
```
sudo docker build -t c-backend:latest .
```
运行镜像
构建 c-redis 镜像(/c-backend目录下):
```
sudo docker
run -d -p 5000:5000 c-backend
:latest
sudo docker
build -t c-redis
:latest
.
```
临时前台运行镜像
(可选)查看已存在的 Docker Network:
```
sudo docker
run -it -p 5000:5000 c-backend:latest
sudo docker
network ls
```
## 运行集群
创建 Docker Network 用于连通 c-backend 和 c-redis:
```
sudo docker network create -d overlay c-network
```
初始化
前置步骤:Docker Swarm 初始化(初次使用时):
```
sudo docker swarm init
```
创建服务 (--replicas 实例数量) (--limit-memory 单个节点内存限制)
(可选)删除之前的服务:
```
sudo docker service create --name c-backend-service --limit-memory=4GB --replicas 7 -p 5000:5000 c-backend:latest
sudo docker service rm c-backend-service
sudo docker service rm c-redis-service
```
删除服务
(可选)检查是否删除完毕,查看正在运行的容器:
```
sudo docker service rm c-backend-service
sudo docker ps
```
创建 c-redis 服务:
```
sudo docker service create --name c-redis-service --network c-network -p 6379:6379 c-redis:latest
```
## 额外
创建 c-backend 服务:(--limit-memory 单个实例的内粗限制)(--replicas 副本数量,建议设置为
`线程数 - 1`
)
```
sudo docker service create --name c-backend-service --network c-network --limit-memory=4GB --replicas 7 -p 5000:5000 c-backend:latest
```
# 检查
后端为http,请自行代理为https
部署完成后,可访问 ip:5000/state 查看部署结果。
预期结果:
```
OK.
redis_available: True
```
# 备注
后端为http协议,请自行代理为https
后端设置为完全允许跨域
## 请求
# 请求
### 获取后端状态
#### 获取后端状态
路径:
`/state`
路径:
`/state
`
方法:
`GET
`
方法:
`GET
`
返回:
`string:`
`OK
`
返回:
`OK`
### 分析代码
#### 分析代码
路径:
`/visualize`
路径:
`/visualize
`
方法:
`POST
`
方法:
`POST`
请求:form-data:
请求: form-data:
`code`
:
`代码`
`
code`
:
`代码`
`
stdin`
:
`测试用例`
(可选)
`stdin`
:
`测试用例`
(可选)
返回:
`json:`
`{...json...}`
返回:
`{...json...}`
# 额外文件
## 文件列表
仓库内含有几个额外文件,其目的是减少构建时的网络影响。
`c_backend.tar.gz`
:
下面列出了文件来源,可自行下载检查。
来自仓库 https://github.com/pathrise-eng/pathrise-python-tutor/tree/master/v4-cokapi/backends/c_cpp 的代码打包,减少构建时的网络影响
`c_backend.tar.gz`
:
`openssl-3.2.1.tar`
:
来自仓库 https://github.com/pathrise-eng/pathrise-python-tutor/tree/master/v4-cokapi/backends/c_cpp 的代码打包。
来自 https://www.openssl.org/source/
openssl-3.2.1.tar
.gz ,减少构建时的网络影响
`
openssl-3.2.1.tar
`
:
`Python
-3.
1
2.
2
.t
gz`
:
来自 https://www.openssl.org/source/openssl
-3.2.
1
.t
ar.gz ,下载后得到的是
`openssl-3.2.1.tar.tar`
。
来自 https://www.python.org/ftp/python/3.12.2/
Python-3.12.2.tgz
,减少构建时的网络影响
`
Python-3.12.2.tgz
`
:
`backend.py`
:
来自 https://www.python.org/ftp/python/3.12.2/Python-3.12.2.tgz 。
服务端脚本
# Redis 配置
`run_cpp_backend.py`
:
仓库中的
`redis.conf`
相对于默认配置,做出了以下修改
:
替换
`c_backend.tar.gz`
里原有的脚本,使其适配服务端
\ No newline at end of file
```
# bind 127.0.0.1 ::1
protected-mode no
requirepass c-backend
maxmemory 1gb
```
\ No newline at end of file
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment