diff --git a/0-base/Dockerfile b/0-base/Dockerfile index 70efb75..f2ae689 100644 --- a/0-base/Dockerfile +++ b/0-base/Dockerfile @@ -1,6 +1,9 @@ FROM python:3.6 -ADD . /app -RUN cd /app && pip install -r requirements.txt +WORKDIR /app + +ADD . . + +RUN pip install -r requirements.txt ENTRYPOINT ["python", "/app/app.py"] diff --git a/2-optimize-dockerfile/Dockerfile b/2-optimize-dockerfile/Dockerfile new file mode 100644 index 0000000..eac547a --- /dev/null +++ b/2-optimize-dockerfile/Dockerfile @@ -0,0 +1,10 @@ +FROM python:3.6 + +WORKDIR /app + +ADD requirements.txt . +RUN pip install -r requirements.txt + +ADD . . + +ENTRYPOINT ["python", "/app/app.py"] diff --git a/2-optimize-dockerfile/Tiltfile b/2-optimize-dockerfile/Tiltfile new file mode 100644 index 0000000..80b2cc6 --- /dev/null +++ b/2-optimize-dockerfile/Tiltfile @@ -0,0 +1,13 @@ +# -*- mode: Python -*- + +# Records the current time, then kicks off a server update. +# Normally, you would let Tilt do deploys automatically, but this +# shows you how to set up a custom workflow that measures it. +local_resource( + 'deploy', + 'date +%s%N > start-time.txt', +) + +docker_build('example-python-image', '.') +k8s_yaml('kubernetes.yaml') +k8s_resource('example-python', port_forwards=8000, resource_deps=['deploy']) diff --git a/2-optimize-dockerfile/app.py b/2-optimize-dockerfile/app.py new file mode 100644 index 0000000..406449c --- /dev/null +++ b/2-optimize-dockerfile/app.py @@ -0,0 +1,26 @@ +import time + +from flask import Flask, render_template +app = Flask(__name__) + +UPDATE_TIME = 'N/A' + + +def get_update_time_secs() -> float: + with open('/app/start-time.txt', 'r') as file: + start_ns_since_epoch = float(file.read().strip()) + + start_secs_since_epoch = start_ns_since_epoch / 10**9 + now_secs_since_epoch = time.time() + + return round(now_secs_since_epoch - start_secs_since_epoch, 2) + + +@app.route("/") +def serve(): + return render_template("index.html", time=UPDATE_TIME) + + +if __name__ == "__main__": + UPDATE_TIME = get_update_time_secs() + app.run(port=8000) diff --git a/2-recommended/kubernetes.yaml b/2-optimize-dockerfile/kubernetes.yaml similarity index 100% rename from 2-recommended/kubernetes.yaml rename to 2-optimize-dockerfile/kubernetes.yaml diff --git a/2-recommended/requirements.txt b/2-optimize-dockerfile/requirements.txt similarity index 100% rename from 2-recommended/requirements.txt rename to 2-optimize-dockerfile/requirements.txt diff --git a/2-recommended/static/pets.png b/2-optimize-dockerfile/static/pets.png similarity index 100% rename from 2-recommended/static/pets.png rename to 2-optimize-dockerfile/static/pets.png diff --git a/2-optimize-dockerfile/templates/index.html b/2-optimize-dockerfile/templates/index.html new file mode 100644 index 0000000..bdc69e7 --- /dev/null +++ b/2-optimize-dockerfile/templates/index.html @@ -0,0 +1,10 @@ + + + +
+ +
Hello cats!
+
Time from "deploy" button pressed → server up: {{time}}s
+
+ + diff --git a/2-recommended/Dockerfile b/2-recommended/Dockerfile deleted file mode 100644 index 62e4b7d..0000000 --- a/2-recommended/Dockerfile +++ /dev/null @@ -1,6 +0,0 @@ -FROM python:3.6 - -ADD . /app -RUN cd /app && pip install -r requirements.txt - - ENTRYPOINT ["python", "/app/app.py"] diff --git a/3-recommended/Dockerfile b/3-recommended/Dockerfile new file mode 100644 index 0000000..eac547a --- /dev/null +++ b/3-recommended/Dockerfile @@ -0,0 +1,10 @@ +FROM python:3.6 + +WORKDIR /app + +ADD requirements.txt . +RUN pip install -r requirements.txt + +ADD . . + +ENTRYPOINT ["python", "/app/app.py"] diff --git a/2-recommended/Tiltfile b/3-recommended/Tiltfile similarity index 100% rename from 2-recommended/Tiltfile rename to 3-recommended/Tiltfile diff --git a/2-recommended/app.py b/3-recommended/app.py similarity index 100% rename from 2-recommended/app.py rename to 3-recommended/app.py diff --git a/3-recommended/kubernetes.yaml b/3-recommended/kubernetes.yaml new file mode 100644 index 0000000..3058edf --- /dev/null +++ b/3-recommended/kubernetes.yaml @@ -0,0 +1,20 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: example-python + labels: + app: example-python +spec: + selector: + matchLabels: + app: example-python + template: + metadata: + labels: + app: example-python + spec: + containers: + - name: example-python + image: example-python-image + ports: + - containerPort: 8000 diff --git a/3-recommended/requirements.txt b/3-recommended/requirements.txt new file mode 100644 index 0000000..ae09db0 --- /dev/null +++ b/3-recommended/requirements.txt @@ -0,0 +1 @@ +Flask==1.0.2 \ No newline at end of file diff --git a/3-recommended/static/pets.png b/3-recommended/static/pets.png new file mode 100644 index 0000000..fc69ccc Binary files /dev/null and b/3-recommended/static/pets.png differ diff --git a/2-recommended/templates/index.html b/3-recommended/templates/index.html similarity index 100% rename from 2-recommended/templates/index.html rename to 3-recommended/templates/index.html