Ngab-Rio.

Deploy React Dengan Docker >

1. Install Dependensi yang Dibutuhkan


Untuk tahap pertama kita memerlukan beberapa system requirement seperti docker dan docker-compose, kita tidak membutuhkan nginx karena kita menggunakan docker. Docker sendiri merupakan tools containerisasi. Yap, Docker membuat environment sendiri tanpa perlu mengganggu sistem utama (host OS).


Berikut instalasi dependensinya


# Update Sistem Operasi
sudo apt update -y && apt upgrade -y

Kemudian lakukan instalasi docker


# Install dependencies pendukung
sudo apt install \
ca-certificates \
curl \
gnupg \
lsb-release -y

# Tambahkan GPG key resmi Docker
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# Tambahkan repository Docker ke sources.list
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# Update dan install Docker Engine
sudo apt update -y
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y

# Verifikasi instalasi Docker
docker --version
docker compose version

Setelah selesai, pastikan Docker berjalan dengan benar:


# Jika kamu ingin Docker selalu berjalan otomatis saat booting
sudo systemctl enable docker

# Cek status Docker service
sudo systemctl status docker

# (Opsional) Tambahkan user ke grup Docker agar tidak perlu sudo
sudo usermod -aG docker $USER
newgrp docker

2. Clone Projek dari GitHub


Selanjutnya cloning projek dari GitHub, baik saya sudah punya project di GitHub, selanjutnya kita tinggal cloning saja dengan perintah:


git clone https://github.com/Ngab-Rio/CI-CD-Basic.git

Setelah itu masuk ke direktori hasil dari clone repo GitHub kalian


3. Menyiapkan Dockerfile, docker-compose, nginx


Setelah kalian clone projek dari GitHub, langkah selanjutnya adalah membuat file Dockerfile, docker-compose dan juga saya menyiapkan Nginx.


Letakkan Dockerfile, docker-compose.yml dan nginx.conf pada direktori atau folder projek kalian




  • Isi nginx.conf:


    server{
    listen 80;
    server_name _;

    root /usr/share/nginx/html;
    index index.html;

    location / {
    try_files $uri $uri/ index.html;
    }
    }



  • Isi Dockerfile:




FROM node:latest AS build

WORKDIR /app

COPY package.* ./
RUN npm install

COPY . .
RUN npm run build

FROM nginx:alpine

COPY --from=build /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/conf.d/default.conf

EXPOSE 80

CMD ["nginx", "-g", "daemon off;"]


  • Isi docker-compose.yml:
    services:
    app-react:
    container_name: app_react
    build:
    context: .
    dockerfile: Dockerfile
    ports:
    - "3000:80"
    networks:
    - app-react-network
    networks:
    app-react-network:
    driver: bridge


Kemudian uji coba dnegan akses http://(ip-kalian):3000/

← Kembali ke Beranda