Ops
  • Introduction
  • Getting Started
  • Basic Usage
  • Configuration
  • Examples
  • Images
  • Instances
  • Volumes
  • Networking
  • Packages
  • Klibs
  • GPU
  • Hardware Acceleration
  • Clouds
    • Azure
    • AWS
    • Digital Ocean
    • Google Cloud Integration
    • IBM
    • Linode
    • OCI
    • UpCloud
    • Vultr
  • Hypervisors
    • Bhyve
    • Compose
    • Docker
    • Firecracker
    • OpenVMM
    • Hyper-V
    • Onprem
    • OpenStack
    • ProxMox
    • Virtual Box
    • VSphere
    • WorkStation
    • Terraform
    • Kubernetes
    • Bare Metal
    • Integrations
    • Debugging
    • CrossBuilding
    • MacOS
    • Deploy
    • FAQ
    • Benchmarking
  • Tools
    • Visual Studio Code Extension
  • Developer
    • Env Setup
    • Install from Source
Powered by GitBook
On this page
  • Deploying a Static File Server
  • Examples

Was this helpful?

Examples

Check out this list of examples here.

Deploying a Static File Server

Lets start with a basic go static file server, copy-and-paste below to server.go:

package main

import (
    "log"
    "net/http"
)

func main() {
    fs := http.FileServer(http.Dir("static"))
    http.Handle("/", fs)

    log.Println("Listening...on 8080")
    http.ListenAndServe(":8080", nil)
}

Now build server.go:

$ GOOS=linux go build server.go

Prepare the HTML content:

$ mkdir static
$ cd static

Create hello.html:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
    <title>A static page</title>
</head>
<body>
    <h1>Hello from a static page</h1>
</body>
</html>

Create a config file named config.json:

{
    "Dirs" : ["static"],
    "Files":["/lib/x86_64-linux-gnu/libnss_dns.so.2", "/etc/ssl/certs/ca-certificates.crt"]
}

If you are on linux you can use the above example to enable dns/tls, otherwise you can use this for local Mac examples.

Note: This is more than likely to change in the very near future.

{
    "Dirs" : ["static"]
}

The directory structure should look like below after these steps:

.
├── config.json
├── server
└── static
    └── hello.html

Package and deploy:

$ ops run -p 8080 -c config.json server

Notice that we are using KVM user-mode networking and have to forward host port 8080 to VM.

Curl it:

curl http://localhost:8080/hello.html

To learn more about various config options visit OPS GitHub repository.

Examples

More examples can be found from the ops-examples repository.

  • ada

  • austral

  • bog

  • c

  • c3

  • clojure

  • cpp

  • crystal

  • cyber

  • d

  • dada

  • dotnet

  • elixir

  • forth

  • golang

  • hare

  • haskell

  • hvm

  • Idris

  • java

  • javascript

  • kotlin

  • lua

  • nature

  • nelua

  • nginx

  • nim

  • ocaml

  • odin

  • onyx

  • pascal

  • perl

  • php

  • picat

  • polygon

  • pony

  • prolog

  • python

  • raku

  • R

  • ruby

  • rune

  • rust

  • scala

  • scheme

  • spark

  • swift

  • tarantool

  • typescript

  • umka

  • wasm

  • yaksha

  • zig

PreviousConfigurationNextImages

Last updated 10 months ago

Was this helpful?