Skip to content
master
Go to file
Code

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 

README.md

Deno Docker

Docker files for deno published on Dockerhub:

ci status

The amazonlinux1 build is used to run deno on AWS Lambda.


Run locally

To start the deno repl:

$ docker run -it --init hayd/alpine-deno:1.4.2 repl

To shell into the docker runtime:

$ docker run -it --init --entrypoint sh hayd/alpine-deno:1.4.2

To run main.ts from your working directory:

$ docker run -it --init -p 1993:1993 -v $PWD:/app hayd/alpine-deno:1.4.2 run --allow-net /app/main.ts

Here, -p 1993:1993 maps port 1993 on the container to 1993 on the host, -v $PWD:/app mounts the host working directory to /app on the container, and --allow-net /app/main.ts is passed to deno on the container.

As a Dockerfile

FROM hayd/alpine-deno:1.4.2

# The port that your application listens to.
EXPOSE 1993

WORKDIR /app

# Prefer not to run as root.
USER deno

# Cache the dependencies as a layer (the following two steps are re-run only when deps.ts is modified).
# Ideally cache deps.ts will download and compile _all_ external files used in main.ts.
COPY deps.ts .
RUN deno cache deps.ts

# These steps will be re-run upon each file change in your working directory:
ADD . .
# Compile the main app so that it doesn't need to be compiled each startup/entry.
RUN deno cache main.ts

CMD ["run", "--allow-net", "main.ts"]

and build and run this locally:

$ docker build -t app . && docker run -it --init -p 1993:1993 app

(optional) Add deno alias to your shell

Alternatively, you can add deno command to your shell init file (e.g. .bashrc):

deno () {
  docker run \
    --interactive \
    --tty \
    --rm \
    --volume $PWD:/app \
    --volume $HOME/.deno:/deno-dir \
    --workdir /app \
    hayd/alpine-deno:1.4.2 \
    "$@"
}

and in your terminal

$ source ~/.bashrc
$ deno --version
$ deno run ./main.ts

See example directory.

Note: Dockerfiles provide a USER deno and DENO_DIR is set to /deno-dir/ (which can be overridden).

If running multiple deno instances within the same image you can mount this directory as a shared volume.

You can’t perform that action at this time.