Развертывание приложения NodeJS Restful с помощью Docker с использованием Nginx в качестве прокси-сервера (Ubuntu)

В последнее время, в качестве продвижения к эффективной непрерывной интеграции и непрерывной разработке (CI/CD), я докеризировал все свои приложения и запускал эти приложения внутри контейнеров с помощью Docker. NodeJS оказался крепким орешком… но, увы, он наконец-то расколот. Вот как мне удалось наконец-то докеризировать и запустить приложение NodeJS RESTFUL.

  1. Перейдите к выбранной файловой системе и создайте каталог, а затем перейдите в созданный каталог.

  2. Создайте новое приложение nodejs с помощью npm или yarn, запустив его:

  3. Добавьте зависимости вашего приложения, такие как Express:

  4. Теперь у вас должен быть файл package.json, папки node_modules и, возможно, несколько файлов блокировки. Создайте главный файл этой командой в окне терминала / оболочки вашего каталога приложений, выполнив: $ touch <filename>.js.
    5.Отредактируйте файл package.json. Добавьте его, если он не существует, в раздел определения скриптов и сохраните файл.

"scripts": {
"start": "node <mainfile>"
}
Вход в полноэкранный режим Выйдите из полноэкранного режима
  1. Для докеризации приложения добавьте следующие файлы из терминала в файловую систему каталога app.$ touch Dockerfile$ touch docker-compose.yml.
  2. Откройте и отредактируйте Dockerfile со следующим содержимым.
# obtain the node image
FROM node
# change to the working directory
WORKDIR <directory_name>
#move the package file to the current working directory
COPY package*.json ./
# install the depedencies
RUN npm install
COPY . .
# run the app
CMD [ "node", <mainfile> ]
Войти в полноэкранный режим Выйдите из полноэкранного режима
  1. Создайте новый каталог в папке app для конфигурации nginx, перейдите в него и создайте новый файл nginx conf.mkdir nginx && cd nginx && touch default.conf.
  2. Отредактируйте файл default conf с таким содержимым; имя окружения и порт должны быть получены и определены в файле docker-compose.yml.
http {
 upstream backend {
   server <environment_name: port>
 }
 server {
  location / {
    proxy_pass http://backend;
  } 
 }
}
Вход в полноэкранный режим Выход из полноэкранного режима
  1. Отредактируйте файл docker-compose.yml с таким содержимым.
versions: '3',
services:
  nginx_server:
    image: nginx #image of the nginx
    volumes: 
     - './nginx/default.conf:/etc/nginx/nginx.conf'
    ports:
     - '8000:80'
  #define the node app container
  app:
   container_name: <container name>
   build:
    context: .
    dockerfile: Dockerfile #name of the dockerfile we created
  ports:
   - '3000:80' #docker container port = 3000, host port= 80
  environment:
   - APPID=3000
Войти в полноэкранный режим Выйти из полноэкранного режима

Оцените статью
devanswers.ru
Добавить комментарий