Dockerized Node.js App on Elastic Beanstalk Example

Example of developing and deploying a dockerized Node.js app to Elastic Beanstalk

source on Github at pfeilbr/Elastic-Beanstalk-Docker-Node.js-Example

Local Development Workflow

  1. Edit code. e.g. index.js

  2. Build image

    $ docker build --tag="pfeilbr/eb-docker-node-example" .
  3. Run

    $ docker run -p 80:80 -it -rm -name eb-docker-node-example pfeilbr/eb-docker-node-example
  4. Get docker host ip (optional. only if using boot2docker)

    $ boot2docker ip
  5. Open browser to http://<boot2docker ip>

Initial Deployment

  1. Init git repo

    $ git init .
  2. Add files to repo

    $ git add .
  3. Commit changes

    $ git commit -m "init"
  4. Create eb app

    $ eb init # populate details

    Populate all details

  5. Create environment for app

    $ eb create dev-env

    IMPORTANT Must immediately update the ec2 instance with tags so it doesn’t get terminated. Enable termination protection on the ec2 instance.


Deploying Updates

  1. Modify code and test via [Local Development Workflow]

  2. Commit changes

    $ git commit -a -m "my updates"
  3. Deploy to eb

    $ eb deploy

NOTE: Takes between 3-5 min to deploy changes


Establish Interactive Bash Shell in Running Docker Container

  1. ssh into ec2 docker host server

    $ eb ssh
  2. Get container name

    $ sudo docker ps # save off name of container
  3. Connect/attach with an interactive bash session

    $ sudo docker exec -i -t <container name> bash

Example Session with Output