diff --git a/deno/deno-multistage.dockerfile b/deno/deno-multistage.dockerfile new file mode 100644 index 0000000..788ca94 --- /dev/null +++ b/deno/deno-multistage.dockerfile @@ -0,0 +1,13 @@ +FROM aimvector/deno:1.0.0-buster-slim as build + +COPY ./src/ $DENO_DIR + +RUN mkdir /out/ +RUN deno bundle /deno-dir/server.js /out/server.js + +FROM aimvector/deno:1.0.0-buster-slim as final + +COPY --from=build /out/server.js /deno-dir/server.js + +ENTRYPOINT ["deno"] +CMD ["run", "--allow-net", "/deno-dir/server.js"] \ No newline at end of file diff --git a/deno/deno.dockerfile b/deno/deno.dockerfile new file mode 100644 index 0000000..0474c47 --- /dev/null +++ b/deno/deno.dockerfile @@ -0,0 +1,25 @@ +FROM debian:buster-slim + +ENV DENO_VERSION=1.0.0 + +RUN apt-get -qq update \ + && apt-get -qq install -y --no-install-recommends curl ca-certificates unzip \ + && curl -fsSL https://github.com/denoland/deno/releases/download/v${DENO_VERSION}/deno-x86_64-unknown-linux-gnu.zip \ + --output deno.zip \ + && unzip deno.zip \ + && rm deno.zip \ + && chmod 777 deno \ + && mv deno /usr/bin/deno \ + && apt-get -qq remove --purge -y curl ca-certificates unzip \ + && apt-get -y -qq autoremove \ + && apt-get -qq clean \ + && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* + +RUN useradd --uid 1993 --user-group deno \ + && mkdir /deno-dir/ \ + && chown deno:deno /deno-dir/ + +ENV DENO_DIR /deno-dir/ + +ENTRYPOINT ["deno"] +CMD ["run", "https://deno.land/std/examples/welcome.ts"] \ No newline at end of file diff --git a/deno/deployment/deployment.yaml b/deno/deployment/deployment.yaml new file mode 100644 index 0000000..05a51da --- /dev/null +++ b/deno/deployment/deployment.yaml @@ -0,0 +1,35 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: example-deploy + labels: + app: example-app + annotations: +spec: + selector: + matchLabels: + app: example-app + replicas: 2 + strategy: + type: RollingUpdate + rollingUpdate: + maxSurge: 1 + maxUnavailable: 0 + template: + metadata: + labels: + app: example-app + spec: + containers: + - name: example-app + image: aimvector/deno-app:v1 + imagePullPolicy: Always + ports: + - containerPort: 5000 + resources: + requests: + memory: "64Mi" + cpu: "10m" + limits: + memory: "256Mi" + cpu: "500m" \ No newline at end of file diff --git a/deno/deployment/service.yaml b/deno/deployment/service.yaml new file mode 100644 index 0000000..de00471 --- /dev/null +++ b/deno/deployment/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: example-service + labels: + app: example-app +spec: + type: LoadBalancer + selector: + app: example-app + ports: + - protocol: TCP + name: http + port: 80 + targetPort: 5000 \ No newline at end of file diff --git a/deno/dockerfile b/deno/dockerfile new file mode 100644 index 0000000..ccad2dc --- /dev/null +++ b/deno/dockerfile @@ -0,0 +1,6 @@ +FROM aimvector/deno:1.0.0-buster-slim as build + +COPY ./src/ $DENO_DIR + +ENTRYPOINT ["deno"] +CMD ["run", "--allow-net", "/deno-dir/server.js"] \ No newline at end of file diff --git a/deno/src/server.js b/deno/src/server.js new file mode 100644 index 0000000..006274c --- /dev/null +++ b/deno/src/server.js @@ -0,0 +1,5 @@ +import { serve } from "https://deno.land/std@0.50.0/http/server.ts"; + +for await (const req of serve({ port: 5000 })) { + req.respond({ body: "Hello World! - from Deno 1.0.0\n" }); +} \ No newline at end of file