Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

https://github.com/beefsack/webify

Turn shell commands into web services
https://github.com/beefsack/webify

function serverless shell web

Last synced: 24 days ago
JSON representation

Turn shell commands into web services

Lists

README

        


webify


Turn functions and commands into web services



Build Status
Go Report Card
MIT License


For a real world example, see [turning a Python function into a web
service](examples/python-function).

## Overview

`webify` is a very basic CGI server which forwards all requests to a single
script. A design goal is to be as zero-config as possible.

`webify` invokes your script and writes the request body to your process'
stdin. Stdout is then passed back to the client as the HTTP response body.

If your script returns a non-zero exit code, the HTTP response status code will
be 500.

## Installation

`webify` is available from the [project's releases page](https://github.com/beefsack/webify/releases).

On macOS, it can also be installed via [MacPorts](https://ports.macports.org/port/py-boltons/summary):

```bash
sudo port install webify
```

## Usage

```bash
# Make a web service out of `wc` to count the characters in the request body.
$ webify wc -c
2020/08/25 12:42:32 listening on :8080, proxying to wc -c

...

$ curl -d 'This is a really long sentence' http://localhost:8080
30
```

### Official Docker image

The official Docker image is [beefsack/webify](https://hub.docker.com/r/beefsack/webify).

It can be configured using the following environment variables:

* `ADDR` - the address to listen on inside the container, defaults to `:80`
* `SCRIPT` - the command to execute, defaults to `/script`

#### Mounting script and running official image

```
$ docker run -it --rm -p 8080:80 -v /path/to/my/script:/script beefsack/webify:latest
2020/08/25 04:27:46 listening on :80, proxying to /script

...

$ curl -d 'Some data' http://localhost:8080
```

#### Building a new image using official image as base

Create a `Dockerfile` like the following:

```
FROM beefsack/webify:latest
COPY myscript /script
```

## Contributing
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License
[MIT](https://choosealicense.com/licenses/mit/)