- Dockerizing a Node.js web app
- NodeUp Docker podcast episode
- Node Dockerhub images - list of Docker images with different Node versions
- Docker cheat sheet
- fuge - Node microservices and sites with nice development workflow
- Microservices with fuge - my blog post showing local development workflow
- Run Node in a docker container with file access
-
-
Save logicaroma/656e16c82159ac20d58f to your computer and use it in GitHub Desktop.
A personal cheat sheet for running local Node project in a Docker container
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# See list of docker virtual machines on the local box | |
$ docker-machine ls | |
NAME ACTIVE URL STATE URL SWARM DOCKER ERRORS | |
default * virtualbox Running tcp://192.168.99.100:2376 v1.9.1 | |
# Note the host URL 192.168.99.100 - it will be used later! | |
# Build an image from current folder under given image name | |
$ docker build -t gleb/demo-app . | |
# see list of build images | |
$ docker images | |
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE | |
gleb/demo-app latest 506bf31537d4 17 minutes ago 904.5 MB | |
node 5.0 c4f955829812 10 weeks ago 642.2 MB | |
# Note both the original Node:5 and the built images are there | |
# Let us run the image under name 'demo' | |
$ docker run --name demo -p 5000:1337 -d gleb/demo-app | |
9f9f3ae62038805504c3c23cce4e9229008ba6bd9ea16b560a7a9e1cfa932e57 | |
# Note: you can pass environment variable values to the `docker run` command | |
# docker run -e USER=name | |
# or, if the USER is already an environment var | |
# docker run -e USER | |
# or put all env variables into a file and pass its name | |
# docker run --env-file=<filename> | |
# You can check all the options passed into the running container | |
# docker inspect demo | |
# It prints the long container ID, but we can use our name "demo" | |
# We also mapped outside port 5000 to container's exposed port 1337 | |
# Let us see running containers | |
$ docker ps | |
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES | |
9f9f3ae62038 gleb/demo-app "node server.js" About a minute ago Up About a minute 0.0.0.0:5000->1337/tcp demo | |
# Let us make a dummy request to the app running inside the container | |
# We will use the virtual machine's IP and outside port 5000 | |
$ curl 192.168.99.100:5000 | |
Not Found | |
# Let us see the app's console log to confirm that it has received our request | |
$ docker logs demo | |
listening on port 1337 { subdomainOffset: 2, proxy: false, env: 'development' } | |
started server | |
<-- GET / | |
--> GET / 404 6ms - | |
# Jump into the running container to run any commands | |
# -i option means bind STDIO from the current shell | |
docker exec -it demo bash | |
root@9f9f3ae62038:/usr/src/demo-server# ls | |
... list of files | |
root@9f9f3ae62038:/usr/src/demo-server# exit | |
# If you want to quickly list files in the docker container (default folder) | |
# you can use `docker exec` | |
$ docker exec -t demo ls | |
# ... list of files in /usr/src folder | |
# We can even copy files from the container back into our system | |
docker cp demo:/usr/src/demo-server/file.txt file.txt | |
# look at file.txt locally | |
# Nice! | |
# To stop the running container | |
$ docker stop demo |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# simple docker file | |
# assumes located in the same folder as the application itself | |
# start with node 5 base image | |
FROM node:5.0 | |
# Create an app directory (in the Docker container) | |
RUN mkdir -p /usr/src/demo-server | |
WORKDIR /usr/src/demo-server | |
# Copy .npm settings and package.json into container | |
COPY package.json /usr/src/demo-server | |
COPY .npmrc /usr/src/demo-server | |
# and install dependencies | |
RUN npm install | |
# Copy our source into container | |
COPY src /usr/src/demo-server/src | |
COPY server.js /usr/src/demo-server | |
# If our server uses 1337 by default | |
# expose it from Docker container | |
EXPOSE 1337 | |
# Finally start the container command | |
CMD ["node", "server.js"] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment