根据 uWSGI 实例中的烧瓶请求创建 docker 容器
Create docker container from flask request in uWSGI instance
我有一个 docker 容器,它被设置为使用 selenium 执行一些给定的操作。我的目标是在收到使用 Flask 创建的某个端点的请求时创建 docker 容器。 Flask 应用程序已使用此 tut.
与 uWSGI 和 Nginx 一起设置
当端点收到请求时,它假设 运行 bash 脚本 ./run.sh:
#!/bin/bash
ID=
docker run --rm \
-v $(pwd)/code:/code \
-v /etc/hosts:/etc/hosts \
selenium \
python3 \
/code/main.py ${ID}
我可以使用数字海洋提供的 IP 成功调用端点,但是当它到达需要 运行 docker 的位置时,它说:
docker: 找不到命令
注意,我可以手动进入 virtualenv,运行 python app.py,将请求发送到 flask 端点并创建 docker 容器,一切正常.
您可能需要向 bash 脚本添加一个 PATH 变量,其中包含 docker 可执行文件的位置。用户 运行 NGINX 可能没有设置路径。
PATH=$PATH:/usr/local/bin:/usr/bin
此外,您还需要确保用户 运行 NGINX 有权使用 docker,因此将他们添加到 docker 组。
如果这是一个 public 服务,那么我会仔细考虑你是否真的希望互联网用户在你的服务器上启动容器,$1 来自用户输入吗?
我有一个 docker 容器,它被设置为使用 selenium 执行一些给定的操作。我的目标是在收到使用 Flask 创建的某个端点的请求时创建 docker 容器。 Flask 应用程序已使用此 tut.
与 uWSGI 和 Nginx 一起设置当端点收到请求时,它假设 运行 bash 脚本 ./run.sh:
#!/bin/bash
ID=
docker run --rm \
-v $(pwd)/code:/code \
-v /etc/hosts:/etc/hosts \
selenium \
python3 \
/code/main.py ${ID}
我可以使用数字海洋提供的 IP 成功调用端点,但是当它到达需要 运行 docker 的位置时,它说:
docker: 找不到命令
注意,我可以手动进入 virtualenv,运行 python app.py,将请求发送到 flask 端点并创建 docker 容器,一切正常.
您可能需要向 bash 脚本添加一个 PATH 变量,其中包含 docker 可执行文件的位置。用户 运行 NGINX 可能没有设置路径。
PATH=$PATH:/usr/local/bin:/usr/bin
此外,您还需要确保用户 运行 NGINX 有权使用 docker,因此将他们添加到 docker 组。
如果这是一个 public 服务,那么我会仔细考虑你是否真的希望互联网用户在你的服务器上启动容器,$1 来自用户输入吗?