Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save CrazyAdmin/e76f373b2d017227c4a3fa3050803f06 to your computer and use it in GitHub Desktop.
Save CrazyAdmin/e76f373b2d017227c4a3fa3050803f06 to your computer and use it in GitHub Desktop.
docker + nginx + nodejs + pm2 + mongo
# NGINX CONFIG
server {
listen 80 default_server;
listen [::]:80 default_server;
return 301 https://$host$request_uri;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
ssl on;
ssl_certificate ssl/fullchain.pem;
ssl_certificate_key ssl/privkey.pem;
root /var/www/example.com;
index index.html;
server_name www.sunlive.pro sunlive.pro;
location / {
proxy_pass http://app:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_redirect off;
proxy_buffers 8 32k;
proxy_buffer_size 64k;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-NginX-Proxy true;
}
}
# Docker-compose.yml
version: '3.2'
services:
web:
image: nginx
restart: always
volumes:
# default.conf
- ./config:/etc/nginx/conf.d
- ./ssl:/etc/nginx/ssl
# нужно изменить внешний (первый) порт на открытый например(1337)
# нужно изменить внутренний (второй) порт на 443 если SSL
ports:
- "80:80"
- "443:443"
api:
image: node:10
restart: always
volumes:
- ./myapp:/usr/app
command: /bin/bash -c "cd /usr/app && npm i -g pm2 && npm i && npm start"
mongoDB:
image: mongo
restart: always
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: example
MONGO_INITDB_DATABASE: testdb
ports:
- "3001:27017"
##### pm2 #####
#process.yml
apps:
- script : './src/index.js'
name : 'API'
exec_mode: 'cluster'
instances: 1
watch: true (?)
#package.json
"scripts": {
"start": "pm2-runtime process.yml"
}
#stop all containers:
docker kill $(docker ps -q)
#remove all containers
docker rm $(docker ps -a -q)
#remove all docker images
docker rmi $(docker images -q)
#ssl
#ssl for localhost
https://letsencrypt.org/docs/certificates-for-localhost/
#ssl for domain
https://www.digitalocean.com/community/tutorials/how-to-secure-nginx-with-let-s-encrypt-on-ubuntu-16-04
https://oxozle.com/2018/01/21/nastrojka-ssl-let-s-encrypt-v-nginx-na-ubuntu
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment