|
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.
|