Radoslav Pitonak a13a5db
% nodejs(1)
Radoslav Pitonak a13a5db
% Rado Pitonak \<rpitonak@redhat.com\>
Radoslav Pitonak a13a5db
% DATE 07.04.2017
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
# NAME
Radoslav Pitonak a13a5db
nodejs - source to image builder of node.js applications.
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
# DESCRIPTION
Radoslav Pitonak a13a5db
Image for building node.js application as reproducible Docker image using source to image.Image is based on fedora.
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
# USAGE
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
To pull the nodejs container run:
Radoslav Pitonak a13a5db
Radoslav Pitonak 1df5c02
    # docker pull modularitycontainers/nodejs:6
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
To build your node.js application use run:
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
    # s2i build <SOURCE-REPOSITORY> nodejs:6 <NAME-OF-APP>
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
To run your application in docker container:
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
    # docker -d run -p 8080:8080 <NAME-OF-APP>
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
By default container is running in production mode with exposed port 8080.To change behavior see Enviroment variables section below.
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
# ENVIRONMENT VARIABLES
Radoslav Pitonak a13a5db
NODE_ENV=runtime_mode
Radoslav Pitonak a13a5db
       	     Node.js runtime mode (default: "production")
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
DEV_MODE=mode
Radoslav Pitonak a13a5db
             When set to "true", `nodemon` will be used to automatically reload the server while you work (default: "false"). Setting `DEV_MODE` to "true" will change the `NODE_ENV` default to "development" (if not explicitly set).
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
NPM_RUN=value  
Radoslav Pitonak a13a5db
            Select an alternate / custom runtime mode, defined in your `package.json` file's [`scripts`](https://docs.npmjs.com/misc/scripts) section (default: npm run "start"). These user-defined run-scripts are unavailable while `DEV_MODE` is in use.
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
HTTP_PROXY=url
Radoslav Pitonak a13a5db
            Use an npm proxy during assembly
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
HTTPS_PROXY=url
Radoslav Pitonak a13a5db
            Use an npm proxy during assembly
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
NPM_MIRROR=registry
Radoslav Pitonak a13a5db
            Use a custom NPM registry mirror to download packages during the build process
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
# DEVELOPMENT
Radoslav Pitonak a13a5db
This image supports development mode. This mode can be switched on and off with the environment variable `DEV_MODE`. `DEV_MODE` can either be set to `true` or `false`.
Radoslav Pitonak a13a5db
The debug port can be specified with the environment variable `DEBUG_PORT`. `DEBUG_PORT` is only valid if `DEV_MODE=true`.
Radoslav Pitonak a13a5db
By default, `DEV_MODE` is set to `false`, and `DEBUG_PORT` is set to `5858`, however the `DEBUG_PORT` is only relevant if `DEV_MODE=true`.
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
# HOT DEPLOY
Radoslav Pitonak a13a5db
As part of development mode, this image supports hot deploy. If development mode is enabled, any souce code that is changed in the running container will be immediately reflected in the running nodejs application
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
To change your source code in a running container, use Docker's exec (https://docs.docker.com/engine/reference/commandline/exec/) command:
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
    # docker exec -it <CONTAINER_ID> /bin/bash
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
After you enter into the running container, your current directory is set to /opt/app-root/, where the source code is located.    
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
# EXAMPLE
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
To run your application in development mode run:
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
    # docker run --env DEV_MODE=true -p 8080:8080 <NAME-OF-APP>
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
To run the container in production mode, run:
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
    # docker run --env DEV_MODE=false <NAME-OF-APP>
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
To run the container in development mode with a debug port of 5454, run
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
    # docker run --env DEV_MODE=true DEBUG_PORT=5454 <NAME-OF-APP>
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
To build your application with using of npm proxy.
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
    # s2i build ./test/test-app nodejs:6 my-app --env HTTP_PROXY=url
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
# SECURITY IMPLICATIONS
Radoslav Pitonak a13a5db
-d
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
     Runs continuously as a daemon process in the background
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
-p 8080:8080
Radoslav Pitonak a13a5db
Radoslav Pitonak a13a5db
     Opens  container  port  8080  and  maps it to the same port on the Host.