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 -yKemudian 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 versionSetelah 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 docker2. 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.gitSetelah 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/