Jelajahi Sumber

Merge pull request #1 from aiordache/nginx_goserver_sample

Compose samples
Anca Iordache 6 tahun lalu
induk
melakukan
0bf5504d67

+ 23 - 0
samples/nginx-flask-mongo/docker-compose.yaml

@@ -0,0 +1,23 @@
+version: "3"
+services:
+  web:
+    image: nginx
+    volumes:
+      - ./nginx/nginx.conf:/tmp/nginx.conf
+    environment: 
+      - FLASK_SERVER_ADDR=backend:9091  
+    command: /bin/bash -c "envsubst < /tmp/nginx.conf > /etc/nginx/conf.d/default.conf && nginx -g 'daemon off;'" 
+    ports:
+    - 8080:80
+    depends_on:
+    - backend
+  backend:
+    build: flask
+    environment: 
+    - FLASK_SERVER_PORT=9091
+    volumes:
+    - ./flask:/src
+    depends_on:
+      -  mongo  
+  mongo:
+    image: mongo

+ 7 - 0
samples/nginx-flask-mongo/flask/Dockerfile

@@ -0,0 +1,7 @@
+FROM python:3.7
+
+WORKDIR /src
+COPY . .
+RUN pip install -r requirements.txt
+
+CMD ["./server.py"]

+ 2 - 0
samples/nginx-flask-mongo/flask/requirements.txt

@@ -0,0 +1,2 @@
+pymongo
+flask

+ 22 - 0
samples/nginx-flask-mongo/flask/server.py

@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+import os
+
+from flask import Flask
+from pymongo import MongoClient
+
+app = Flask(__name__)
+
+client = MongoClient("mongo:27017")
+
+@app.route('/')
+def todo():
+    try:
+        client.admin.command('ismaster')
+    except:
+        return "Server not available"
+    return "Hello fom the MongoDB client!\n"
+
+
+if __name__ == "__main__":
+    app.run(host='0.0.0.0', port=os.environ.get("FLASK_SERVER_PORT", 9090), debug=True)
+

+ 6 - 0
samples/nginx-flask-mongo/nginx/nginx.conf

@@ -0,0 +1,6 @@
+server {
+  listen 80;
+  location / {
+    proxy_pass http://$FLASK_SERVER_ADDR;
+  }
+}

+ 11 - 0
samples/nginx-gohttp_1/Dockerfile

@@ -0,0 +1,11 @@
+FROM golang:1.13 AS builder
+
+WORKDIR /compose/hello-docker
+COPY main.go main.go
+RUN CGO_ENABLED=0 go build -o backend main.go
+
+FROM scratch
+COPY --from=builder /compose/hello-docker/backend /usr/local/bin/backend
+CMD ["/usr/local/bin/backend"]
+
+

+ 14 - 0
samples/nginx-gohttp_1/docker-compose.yml

@@ -0,0 +1,14 @@
+
+version: "3.6"
+services:
+  frontend:
+    image: nginx
+    ports:
+    - 8080:80
+    volumes:
+    - ./nginx.conf:/etc/nginx/conf.d/default.conf
+    depends_on:
+    - backend
+  backend:
+    build: .
+

+ 30 - 0
samples/nginx-gohttp_1/main.go

@@ -0,0 +1,30 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"net/http"
+)
+
+func handler(w http.ResponseWriter, r *http.Request) {
+	fmt.Println(r.URL.RawQuery)
+	fmt.Fprintf(w, `
+          ##         .
+    ## ## ##        ==
+ ## ## ## ## ##    ===
+/"""""""""""""""""\___/ ===
+{                       /  ===-
+\______ O           __/
+ \    \         __/
+  \____\_______/
+
+	
+Hello from Docker!
+
+`)
+}
+
+func main() {
+	http.HandleFunc("/", handler)
+	log.Fatal(http.ListenAndServe(":80", nil))
+}

+ 6 - 0
samples/nginx-gohttp_1/nginx.conf

@@ -0,0 +1,6 @@
+server {
+  listen 80;
+  location / {
+    proxy_pass http://backend:80;
+  }
+}

+ 11 - 0
samples/nginx-gohttp_2/backend/Dockerfile

@@ -0,0 +1,11 @@
+FROM golang:1.13 AS build
+
+WORKDIR /compose/hello-docker
+COPY main.go main.go
+RUN CGO_ENABLED=0 go build -o backend main.go
+
+FROM scratch
+COPY --from=build /compose/hello-docker/backend /usr/local/bin/backend
+CMD ["/usr/local/bin/backend"]
+
+

+ 30 - 0
samples/nginx-gohttp_2/backend/main.go

@@ -0,0 +1,30 @@
+package main
+
+import (
+	"fmt"
+	"log"
+	"net/http"
+)
+
+func handler(w http.ResponseWriter, r *http.Request) {
+	fmt.Println(r.URL.RawQuery)
+	fmt.Fprintf(w, `
+          ##         .
+    ## ## ##        ==
+ ## ## ## ## ##    ===
+/"""""""""""""""""\___/ ===
+{                       /  ===-
+\______ O           __/
+ \    \         __/
+  \____\_______/
+
+	
+Hello from Docker!
+
+`)
+}
+
+func main() {
+	http.HandleFunc("/", handler)
+	log.Fatal(http.ListenAndServe(":80", nil))
+}

+ 12 - 0
samples/nginx-gohttp_2/docker-compose.yml

@@ -0,0 +1,12 @@
+
+version: "3.6"
+services:
+  frontend:
+    build: frontend    
+    ports:
+    - 8080:80
+    depends_on:
+    - backend
+  backend:
+    build: backend
+

+ 4 - 0
samples/nginx-gohttp_2/frontend/Dockerfile

@@ -0,0 +1,4 @@
+FROM nginx:alpine 
+COPY nginx.conf /etc/nginx/conf.d/default.conf
+
+

+ 6 - 0
samples/nginx-gohttp_2/frontend/nginx.conf

@@ -0,0 +1,6 @@
+server {
+  listen 80;
+  location / {
+    proxy_pass http://backend:80;
+  }
+}