Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Docker Compose for Node projects with Node, MySQL, Redis, MongoDB, NGINX, Apache2, Memcached, Certbot and RabbitMQ images

License

NotificationsYou must be signed in to change notification settings

Osedea/nodock

Repository files navigation

NoDock

Docker Compose for Node projects with Node, MySQL, MongoDB, NGINX, Memcached, Redis, Certbot and RabbitMQ images

Node + Docker

Why NoDock?

Thedocker Node.js image is very simple, you give it an entrypoint and it runs it. This is fine for very simple/small scripts but for larger projects you'll probably want something a bit more robust.

The goal of NoDock is to provide a complete environment for your node project: Node.js service(s), databases, web servers, queues, etc. while doing the "wiring" for you.

You can use NoDock for simple projects by using one of theexamples or you can build upon them.

Contents

Requirements

Installation

As a git submodule:

git submodule add https://github.com/Osedea/nodock.git

Clone into your project:

git clone https://github.com/Osedea/nodock.git

We recommend youfork this repository if you intend to add project specific scripts/configurations.

Usage

cd nodock# Run "node" and "nginx"docker-compose up -d node nginx

To overwrite thedocker-compose.yml file you can use adocker-compose.override.yml

# docker-compose.override.ymlversion:'3'services:[...]

Examples

We provide examples of configurations you might use for a specific stack. Each example has it's own README file with instructions.

Workspace

Theworkspace container is where you want to be manually running commands forNoDock. You can use this container to initialize your project, for task-automation, forcronjobs, etc.

Using HTTPS

By default HTTPS is disabled. To enable it, you may use the following settings

# docker-compose.override.yml[...]nginx:build:args:                -WEB_SSL=true

Add your certificate tonginx/certs/cacert.pem and the private key tonginx/certs/privkey.pem.

Generate and use a self-signed cert

SELF_SIGNED: "true" will generate the necessary files, do note thatSELF_SIGNED: "true" as no effect ifWEB_SSL: "false"

# docker-compose.override.yml[...]nginx:build:args:                -WEB_SSL=true                -SELF_SIGNED=true

Use Certbot (Let's Encrypt) to generate the cert

CN must be a publicly accessible address andEMAIL should be the server admin contact email.

# docker-compose.override.yml[...]nginx:build:args:                -WEB_SSL=truecertbot:environment:            -CN=example.com            -EMAIL=fake@gmail.com

Don't forget to bring up the container if you plan on using certbot (docker-compose up -d certbot).

Running a single non-web container

The default NGINX server block configuration is aimed at web projects but if you want to have a single non-web container you can do something similar to the following configuration.

# docker-compose.override.yml[...]nginx:build:args:-NO_DEFAULT=trueports:            -"10000:10000"

Do note that usingNO_DEFAULT makesWEB_REVERSE_PROXY_PORT,WEB_SSL andSELF_SIGNED have no effect.

You will then have to provide your own NGINX server block like so

# nginx/sites/custom-node.confserver {    listen 10000 default_server;    location / {        proxy_pass http://node:5000;    }}

Running multiple node containers

To add more node containers, simply add the following to yourdocker-compose.override.yml or environment specific docker-compose file.

# docker-compose.override.yml[...]node2:# name of new containerbuild:# reuse the same values from the node service, cannot use extends in docker-compose 3+context:./nodeargs:                -NODE_VERSION=latest                -PROJECT_PATH=/opt/app/                -NODE_ENV=production                -YARN=falsevolumes:            -../:/opt/appentrypoint:run-nodock "node alternate.js"# the entrypoint for the "node2" containernginx:ports:            -"10000:10000"# the port(s) to forward for the "node2" containerlinks:            -node2# link "nginx" to "node2"

You'll also need to add a server block for "node2".

# nginx/sites/node2.confserver {    listen 10000 default_server;    location / {        proxy_pass http://node2:8000;    }}

Cronjobs

You can run cronjobs in theWorkspace by storing them in theworkspace/crontab/root file.

# workspace/crontab/root* * * * * echo "Every Minute" >> /var/log/cron.log

More Options

To customize the NoDock installation, either add adocker-compose.override.yml in the NoDock directory or store environment specific configurations.

docker-compose -f nodock/docker-compose.yml -f docker-compose.dev.yml up -d

Use Yarn

Set theYARN argument totrue.

# docker-compose.override.yml[...]node:build:args:                -YARN=true

Change the node entrypoint

Usemain.js instead ofindex.js

# docker-compose.override.yml[...]node:entrypoint:run-nodock "node main.js"

Change the Node Environment

The defaultNODE_ENV value isproduction, you can change it to development by doing the following

# docker-compose.override.yml[...]node:build:args:                -NODE_ENV=development

Use a specific Node version

The default node version islatest, this isNOT advisable for production

# docker-compose.override.yml[...]node:build:args:                -NODE_VERSION=4.6.0

Change the Node project path

You can specify aPROJECT_PATH to change the directory in whichnpm will perform it'sinstall command and the directory in whichrun-nodock will run the entrypoint script. This is most desirable when running more than one Node project at a time since they are bound to each have their ownpackage.json file.

# docker-compose.override.yml[...]node:build:args:PROJECT_PATH:somefolder# note that this is the same as "/opt/app/somefolder"

Change the MySQL database/user/password

# docker-compose.override.yml[...]mysql:build:args:                -MYSQL_DATABASE=default_database                -MYSQL_USER=default_user                -MYSQL_PASSWORD=secret

Change the PostgreSQL database/user/password

# docker-compose.override.yml[...]postgresql:build:args:                -POSTGRES_DB=default_db                -POSTGRES_USER=default_user                -POSTGRES_PASSWORD=secret

Change the NGINX reverse proxy port

Use port8080 instead of8000 to bind your Node server

# docker-compose.override.yml[...]nginx:build:args:                -WEB_REVERSE_PROXY_PORT=8080

Change the timezone

To change the timezone for theworkspace container, modify theTZ build argument in the Docker Compose file to one in theTZ database.

For example, if I want the timezone to beNew York:

# docker-compose.override.yml[...]workspace:build:context:./workspaceargs:                -TZ="America/New_York"

Use RabbitMQ plugins

At the moment, NoDock supports 2 plugins:Management andFederation.

To activate them, change their values totrue in your docker-compose file:

# docker-compose.override.yml[...]rabbitmq:build:args:                -MANAGEMENT=true                -FEDERATION=true

Change the RabbitMQ user/password

# docker-compose.override.yml[...]rabbitmq:build:args:                -RABBITMQ_DEFAULT_USER=custom_user                -RABBITMQ_DEFAULT_PASS=custom_pass

Modify the Redis config

You can editredis/redis.conf to modify the redis config.

Contributing

Do not hesitate to contribute to NoDock by creating an issue, fixing a bug or bringing a new idea to the table.

To fix a bug or introduce a new feature, please create a PR, we will merge it in to themaster branch after review.

We thank you in advance for contributing.

License

MIT License (MIT)

Credits

NoDock uses Open Source components. You can find the source code of their open source projects along with license information below. We acknowledge and are grateful to these developers for their contributions to open source.

Project: LaraDockhttps://github.com/LaraDock/laradock
Copyright (c) 2016 Mahmoud Zalt (mahmoud@zalt.me)
License (MIT)https://github.com/LaraDock/laradock/blob/master/LICENSE

Project: baseimage-dockerhttps://github.com/phusion/baseimage-docker
Copyright (c) 2013-2015 Phusion Holding B.V.
License (MIT)https://github.com/phusion/baseimage-docker/blob/master/LICENSE.txt


[8]ページ先頭

©2009-2025 Movatter.jp