FreeShare

Triển khai một ứng dụng Node.js với Express từ GitLab CI/CD lên một server Ubuntu

Thứ bảy, 01/06/2024
image
Triển khai một ứng dụng Node.js với Express từ GitLab CI/CD lên một server Ubuntu

Để triển khai một ứng dụng Node.js với Express từ GitLab CI/CD lên một server Ubuntu, bạn cần các bước sau:

  1. Chuẩn bị server Ubuntu: Cài đặt Docker và Docker Compose.
  2. Tạo và cấu hình dự án Node.js với Express: Bao gồm Dockerfile và .gitlab-ci.yml.
  3. Cấu hình GitLab CI/CD: Để tự động xây dựng và triển khai ứng dụng lên server.

Dưới đây là hướng dẫn chi tiết cho từng bước.

Chuẩn bị Server Ubuntu

  1. Cập nhật hệ thống:

    
     
    bash

    Copy code

    sudo apt update sudo apt upgrade -y

  2. Cài đặt Docker:

    
     
    bash

    Copy code

    sudo apt install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt update sudo apt install docker-ce -y sudo systemctl enable docker sudo systemctl start docker

  3. Cài đặt Docker Compose (tùy chọn nếu bạn cần sử dụng):

    
     
    bash

    Copy code

    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version

Tạo và cấu hình dự án Node.js với Express

  1. Tạo dự án Node.js:

    
     
    bash

    Copy code

    mkdir my-node-app cd my-node-app npm init -y

  2. Cài đặt Express:

    
     
    bash

    Copy code

    npm install express

  3. Tạo các tệp cần thiết:

    • package.json:
    
     
    json

    Copy code

    { "name": "my-node-app", "version": "1.0.0", "description": "A simple Node.js app with Express", "main": "server.js", "scripts": { "start": "node server.js", "build": "echo 'No build step defined'", "test": "echo 'No test specified' && exit 0" }, "author": "", "license": "ISC", "dependencies": { "express": "^4.17.1" } }

    • server.js:
    
     
    javascript

    Copy code

    const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello, World!'); }); app.listen(port, () => { console.log(`Server is running on http://localhost:${port}`); });

    • Dockerfile:
    
     
    Dockerfile

    Copy code

    # Sử dụng image node chính thức từ Docker Hub FROM node:14 # Đặt thư mục làm việc trong container WORKDIR /usr/src/app # Sao chép package.json và package-lock.json vào container COPY package*.json ./ # Cài đặt dependencies RUN npm install # Sao chép toàn bộ mã nguồn vào container COPY . . # Expose port mà ứng dụng của bạn chạy EXPOSE 3000 # Định nghĩa lệnh mặc định khi container chạy CMD ["npm", "start"]

Cấu hình GitLab CI/CD

Tạo tệp .gitlab-ci.yml để định nghĩa pipeline CI/CD:


 

yaml

Copy code

stages: - build - deploy build: stage: build image: docker:latest services: - docker:dind script: - docker build -t my-node-app . - docker save my-node-app > my-node-app.tar artifacts: paths: - my-node-app.tar deploy: stage: deploy image: node:14 script: - apt-get update && apt-get install -y sshpass - sshpass -p "$SSH_PASSWORD" scp -o StrictHostKeyChecking=no my-node-app.tar $SSH_USER@$SSH_HOST:/home/$SSH_USER/ - sshpass -p "$SSH_PASSWORD" ssh -o StrictHostKeyChecking=no $SSH_USER@$SSH_HOST "docker load < /home/$SSH_USER/my-node-app.tar && docker stop my-node-app || true && docker rm my-node-app || true && docker run -d -p 3000:3000 --name my-node-app my-node-app" only: - master variables: SSH_USER: "your_ssh_user" SSH_PASSWORD: "your_ssh_password" SSH_HOST: "your_server_ip"

Cấu hình GitLab CI/CD Environment Variables

Trong GitLab CI/CD settings của dự án của bạn, bạn cần thêm các biến môi trường:

  • SSH_USER: Tên người dùng SSH của bạn trên server Ubuntu.
  • SSH_PASSWORD: Mật khẩu SSH của bạn.
  • SSH_HOST: Địa chỉ IP của server Ubuntu của bạn.

Triển khai ứng dụng

Khi bạn đã đẩy mã nguồn lên repository GitLab, pipeline sẽ tự động chạy và triển khai ứng dụng của bạn lên server Ubuntu.

Kiểm tra triển khai

Truy cập http://your_server_ip:3000 trên trình duyệt để kiểm tra xem ứng dụng đã chạy thành công hay chưa.

Với các bước trên, bạn đã có thể triển khai một ứng dụng Node.js sử dụng Express từ GitLab CI/CD lên một server Ubuntu

source code