Skip to content

Commit 09223e2

Browse files
Merge pull request marcel-dempers#10 from marcel-dempers/deno-docker
deno-overview-video
2 parents bc96847 + dbacbff commit 09223e2

File tree

6 files changed

+99
-0
lines changed

6 files changed

+99
-0
lines changed

deno/deno-multistage.dockerfile

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
FROM aimvector/deno:1.0.0-buster-slim as build
2+
3+
COPY ./src/ $DENO_DIR
4+
5+
RUN mkdir /out/
6+
RUN deno bundle /deno-dir/server.js /out/server.js
7+
8+
FROM aimvector/deno:1.0.0-buster-slim as final
9+
10+
COPY --from=build /out/server.js /deno-dir/server.js
11+
12+
ENTRYPOINT ["deno"]
13+
CMD ["run", "--allow-net", "/deno-dir/server.js"]

deno/deno.dockerfile

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
FROM debian:buster-slim
2+
3+
ENV DENO_VERSION=1.0.0
4+
5+
RUN apt-get -qq update \
6+
&& apt-get -qq install -y --no-install-recommends curl ca-certificates unzip \
7+
&& curl -fsSL https://github.com/denoland/deno/releases/download/v${DENO_VERSION}/deno-x86_64-unknown-linux-gnu.zip \
8+
--output deno.zip \
9+
&& unzip deno.zip \
10+
&& rm deno.zip \
11+
&& chmod 777 deno \
12+
&& mv deno /usr/bin/deno \
13+
&& apt-get -qq remove --purge -y curl ca-certificates unzip \
14+
&& apt-get -y -qq autoremove \
15+
&& apt-get -qq clean \
16+
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
17+
18+
RUN useradd --uid 1993 --user-group deno \
19+
&& mkdir /deno-dir/ \
20+
&& chown deno:deno /deno-dir/
21+
22+
ENV DENO_DIR /deno-dir/
23+
24+
ENTRYPOINT ["deno"]
25+
CMD ["run", "https://deno.land/std/examples/welcome.ts"]

deno/deployment/deployment.yaml

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: example-deploy
5+
labels:
6+
app: example-app
7+
annotations:
8+
spec:
9+
selector:
10+
matchLabels:
11+
app: example-app
12+
replicas: 2
13+
strategy:
14+
type: RollingUpdate
15+
rollingUpdate:
16+
maxSurge: 1
17+
maxUnavailable: 0
18+
template:
19+
metadata:
20+
labels:
21+
app: example-app
22+
spec:
23+
containers:
24+
- name: example-app
25+
image: aimvector/deno-app:v1
26+
imagePullPolicy: Always
27+
ports:
28+
- containerPort: 5000
29+
resources:
30+
requests:
31+
memory: "64Mi"
32+
cpu: "10m"
33+
limits:
34+
memory: "256Mi"
35+
cpu: "500m"

deno/deployment/service.yaml

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
apiVersion: v1
2+
kind: Service
3+
metadata:
4+
name: example-service
5+
labels:
6+
app: example-app
7+
spec:
8+
type: LoadBalancer
9+
selector:
10+
app: example-app
11+
ports:
12+
- protocol: TCP
13+
name: http
14+
port: 80
15+
targetPort: 5000

deno/dockerfile

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
FROM aimvector/deno:1.0.0-buster-slim as build
2+
3+
COPY ./src/ $DENO_DIR
4+
5+
ENTRYPOINT ["deno"]
6+
CMD ["run", "--allow-net", "/deno-dir/server.js"]

deno/src/server.js

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { serve } from "https://deno.land/[email protected]/http/server.ts";
2+
3+
for await (const req of serve({ port: 5000 })) {
4+
req.respond({ body: "Hello World! - from Deno 1.0.0\n" });
5+
}

0 commit comments

Comments
 (0)