Я пропущу «что/почему докер?» Часть, чтобы сделать это прямо до точки! 🤝
Цель: Мы будем использовать nginx в качестве обратного прокси для сервера Nodejs. ⧚
Для этого я буду использовать 2 образы докера из Docker Hub — один для nodejs и еще один для nginx 🤞
Давайте посмотрим на это в действии!
Я уже установил —
- Nodejs
- Докер
Мы создадим простой сервер узла. Мы будем использовать http
Модуль из узла и сделайте простой HTTP-сервер. Server.js
Файл содержит код нашего сервера
var http = require('http'); var server = http.createServer(function (request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.end("Node & Docker Running..."); }); server.listen(3333); console.log("Node HTTP Server started at http://localhost:3333/");
Если мы запустим Node Server.js
На нашем терминале он начнет сервер на 3333 порта на localhost. Мы можем открыть браузер и ударить http://localhost: 3333/
И мы можем видеть сервер отправляет текст Узел и докер работает … Отказ Потрясающий 👏.
Теперь мы хотим создать документ Docker для нашего сервера узла. Для этого нам нужно создать файл с именем Dockerfile
с приведенными ниже командами-
FROM mhart/alpine-node COPY server.js . EXPOSE 3333 CMD node server.js
Вот, я использовал MHART/ALPINE-NODE
(Минимальный Node.js Docker Image) для наличия Nodejs Environment.
Выставлять 3333 средства — 3333 порт предназначен для публикации.
Теперь, когда у нас есть наш Dockerfile
Готовы, мы построим изображение докера из этого файла. Мы можем запустить на терминале
docker build -t docknode .
* Здесь ocknode
это имя изображения. Мы можем использовать любое имя.
Я запускаю изображение Docker, который сделает контейнер для нас
docker run -d -p 3333:3333 --name node-server docknode
Я использовал -d
что поможет запустить контейнер на заднем плане.
После запуска этой команды наш Nodejs Server должен работать внутри контейнера Docker с именем Узел-сервер
Отказ Теперь, если я открою любой браузер и нажмите http://localhost: 3333
мы можем видеть сервер запущен 🎉
Хорошо, потрясающий! Как работает наш сервер Nodejs внутри узла Docker Image, нам нужно добавить nginx Обратный прокси-сервер Далее.
Мы будем использовать официальное изображение Nginx из Dockerhub. Давайте создадим Dockerfile
для этого.
FROM nginx COPY default.conf /etc/nginx/conf.d/
Я собираюсь создать файл под названием default.conf
Для Nginx со следующими конфигурациями —
server { location / { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://server:3333; } }
Обратите внимание, что здесь в конфигурациях, у нас есть http://server:3333 . Этот 3333 это порт из наших Nodejs Docker Consier. Я приду к сервер Часть позже в этой статье.
Пойдем на терминал и запустить-
docker build -t docknginx .
Это построит изображение докера для Nginx. После запуска команды мы увидим что-то вроде
И, чтобы убедиться, что наше изображение доступно в нашей локальной машине, мы можем запустить команду ниже, чтобы увидеть список
docker images
Обидно! Мы можем видеть, как наши изображения доступны здесь 👏
Поскольку наша цель — иметь Nginx в качестве обратного прокси для нашего Nodejs Server. Когда мы запустим изображение NGINX, нам нужно связать сервер Nodejs в Nginx.
Сделать это, я запускаю команду ниже на терминале
docker run -d -p 8080:80 --link node-server:server --name nginx-proxy docknginx
Здесь, —ссылка помогает связать наш контейнер Nodejs к этому контейнеру Nginx. Если вы дважды проверьте, я назвал контейнер Nodejs как Узел-сервер . А также это : сервер Используется внутри наших конфигураций Nginx. 🤝
После запуска команды, если теперь мы идем в наш браузер и нажмите http://localhost: 8080/
, мы можем видеть наше приложение Nodejs сейчас работает на этом порту 🎉
На самом деле мы на самом деле ударим на Nodejs Server через Nginx, так как он работает в качестве обратного прокси.
Потрясающий 🙌.
Я надеюсь, тебе понравилось. И если вы еще не использовали Docker, я думаю, вы должны Попробуйте Это в 2020 году!
Увидимся в моей следующей статье.
До этого, ура! 👋
Как я пытаюсь внести содержание в Интернете, вы можете купить мне кофе для моих часов, потраченных на все эти ❤️😊 🌸
Оригинал: «https://dev.to/destrodevshow/docker-201-use-nginx-as-a-proxy-for-nodejs-server-in-2020-practical-guide-57ji»