此文章废弃,参考另一篇

参考网址:

https://me.jinchuang.org/archives/114.html

https://www.cnblogs.com/jinchuang/p/14200587.html

https://hub.docker.com/r/ipyker/fcgiwrap-nginx-shell

https://github.com/ipyker/fcgiwrap-nginx-shell/blob/main/Dockerfile

https://github.com/ipyker/fcgiwrap-nginx-shell/blob/main/docker-entrypoint.sh

镜像:

docker pull ipyker/fcgiwrap-nginx-shell

启动:

docker run -d --name nginx-fcgiwrap -p 80:80 ipyker/fcgiwrap-nginx-shell

使用:

curl http://127.0.0.1/v1/api/demo   

curl "http://127.0.0.1/v1/api/demo?abc&efg"

Dockerfile

FROM nginx:1.17.9

RUN apt-get update && apt-get install -y spawn-fcgi fcgiwrap \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* EXPOSE 80 STOPSIGNAL SIGTERM COPY docker-entrypoint.sh /
RUN chmod +x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]

docker-entrypoint.sh

#!/bin/bash
# ----------------------------------------------------------------
# Filename: docker-entrypoint.sh
# Revision: 1.1
# Date: 2021-08-26
# Author: pyker.zhang
# Email: pyker@qq.com
# website: www.ipyker.com
# Description: 使用shell写http web接口
# ---------------------------------------------------------------- # nginx支持fcgiwrap配置
cat > /etc/nginx/conf.d/default.conf <<EOF
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log /var/log/nginx/host.access.log main;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ ^/v1/api/(.*)$ {
gzip off;
default_type text/plain;
root /data/shell;
fastcgi_pass unix:/var/run/fcgiwrap.socket;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
}
EOF # 创建shell脚本目录
mkdir -p /data/shell/v1/api # 创建一个demo脚本
cat > /data/shell/v1/api/demo <<EOF
#!/bin/sh
echo "Content-Type:text/html;charset=utf-8"
echo ""
# 自动刷新
#echo '<script>window.setInterval(function(){
# window.location.reload();
#},1000);</script>'
#echo '<meta http-equiv="refresh" content="60">'
# html页面css样式
#echo '<style>
#body{color:#cecece;}
#.title{color: #FF9800;border-left: 4px solid;padding: 4px;}
#pre{font-size:14px;border-left: 4px solid #4CAF50;padding: 5px;}
#</style>'
for i in a b c; do
echo \$i
done
# Passing parameters
echo "\$QUERY_STRING" | awk -F '&' '{print \$1}'
echo "\$QUERY_STRING" | awk -F '&' '{print \$2}'
EOF chmod +x /data/shell/v1/api/demo
/etc/init.d/fcgiwrap start
chmod 766 /var/run/fcgiwrap.socket
nginx -g "daemon off;"

进一步使用

本机创建挂载目录,然后启动容器的时候指定该路径进行挂载

mkdir -p /data/shell
docker run -d --name nginx-fcgiwrap -p 80:80 -v /data/shell:/data/shell/ ipyker/fcgiwrap-nginx-shell

此时在本机的/data/shell/v1/api路径下写shell脚本,然后访问请求,就能执行该shell脚本了

本地挂载路径要跟容器中nginx配置文件中写的路径一致,否则会报403 错误

注意:在该目录下存放的shell脚本需要有x可执行权限,否则会报403错误。

最新文章

  1. Java注解入门
  2. get方式提交中文乱码解决
  3. 技海拾贝 - Java
  4. 关于Intent ,Task, Activity的理解
  5. 搭建你的第一个Django应用程序
  6. 编译器错误消息: CS0234: 命名空间“Purple”中不存在类型或命名空间名称“Model”(是否缺少程序集引用?)
  7. cx_Oracle ORA-24315: 非法的属性类型的解决办法
  8. siege 压力测试
  9. android 44 SQLiteOpenHelper
  10. 求一无序数组中第n大的数字 - 快速选择算法
  11. Debug编辑通过转Release找不到命名空间
  12. python几种常见语法
  13. Python用户输入和代码注释
  14. Contest2161 - 2019-3-21 高一noip基础知识点 测试4 题解版
  15. 通过plsql develop查看建表语句
  16. ModelAndView学习笔记
  17. resume.c
  18. java script sleep synchronous
  19. Django之ORM数据库
  20. [转]让opencv输出人脸检测的得分(置信率)

热门文章

  1. JavaWEB04-Maven&amp;Mybatis
  2. Solution -「最大权闭合子图」做题随笔
  3. 基于ABP实现DDD--领域服务、应用服务和DTO实践
  4. 西文字符与中文GBK编码的区别
  5. 在Mac Os(苹果)上用手机抓包软件Charles抓取微信小程序中的高清无水印视频
  6. inotify 目录文件变更实时监控
  7. Luogu1655 小朋友的球 (组合数学,第二类斯特林数,高精)
  8. java-循环的应用环境以及数组的创建
  9. 免杀手法-tcp套字节传递shellcode学习
  10. mac M1通过homebrew安装python3报错Error: Command failed with exit 128: git