Pertama, kita akan men-clone aplikasi yang ada di github pada direktori /home/admin
cd /home/admin && git clone https://github.com/cloudtutor-io/fastapi-app.git
Perintah di atas akan meng-clone repository fastapi-app ke local.
Update
editor
disebelah kanan dengan meng-klik icon refresh untuk memunculkan direktori aplikasi
Pastikan posisi direktori sama dengan aplikasi yang sudah di clone.
cd fastapi-app
Kedua, buat file Dockerfile didalam direktori aplikasi. gunakan perintah dibawah atau gunakan editor yang berada diatas terminal
touch Dockerfile
Selanjutnya edit file Dockerfile
dan mulai dengan menambahkan base image python
.
FROM python:3.10-alpine
Atur direktori tempat aplikasi akan ditempatkan dan copy file ke dalam docker image.
# set a directory for the app
WORKDIR /app
# copy all the files to the container
COPY . .
Selanjutnya adalah melakukan instalasi dependensi, tambahkan perintah berikut
# install dependencies
RUN pip install --no-cache-dir -r requirements.txt
Selanjutnya expose port yang digunakan oleh aplikasi agar bisa diakses dari luar container & berikan script yang digunakan untuk menjalankan aplikasi
# define the port number the container should expose
EXPOSE 8080
# run the command
CMD ["python", "./main.py"]
Dockerfile berhasil dibuat. berikut hasil akhirnya
FROM python:3.10-alpine
# set a directory for the app
WORKDIR /app
# copy all the files to the container
COPY . .
# install dependencies
RUN pip install --no-cache-dir -r requirements.txt
# define the port number the container should expose
EXPOSE 8080
# run the command
CMD ["python", "./main.py"]
Dockerfile sudah siap, sekarang kita bisa mem-build imagenya. gunakan perintah docker build
diikuti dengan tag untuk memberikan nama pada image.
docker build -t fastapi-app .
keterangan:
- -t digunakan untuk memberikan tag atau nama pada image
- . pada akhir perintah digunakan untuk menentukan path atau root direktori. jika diubah maka perintah copy didalam Dockerfile akan menyesuikan root atau path
docker akan mem-build image dan mengeksekusi perintah - perintah yang ada dalam Dockerfile seperti pada output dibawah
$ docker build -t fastapi-app .
[+] Building 13.3s (10/10) FINISHED
=> [internal] load build definition from Dockerfile 0.0s
=> => transferring dockerfile: 38B 0.0s
=> [internal] load .dockerignore 0.0s
=> => transferring context: 2B 0.0s
=> [internal] load metadata for docker.io/library/python:latest 0.0s
=> [1/5] FROM docker.io/library/python 0.0s
=> [internal] load build context 0.0s
=> => transferring context: 3.36kB 0.0s
=> CACHED [2/5] WORKDIR /app 0.0s
=> [3/5] COPY requirements.txt . 0.0s
=> [4/5] RUN pip install -r requirements.txt 12.6s
=> [5/5] COPY . . 0.1s
=> exporting to image 0.4s
=> => exporting layers 0.4s
=> => writing image sha256:a6856deec95a2b62eb45156bc3c1b45ce7ab 0.0s
=> => naming to docker.io/library/fastapi-app 0.0s
berhasil, kita sudah men-dockerize aplikasi. Image dapat dicek menggunakan perintah docker images
.
REPOSITORY TAG IMAGE ID CREATED SIZE
fastapi-app latest a6856deec95a 2 minutes ago 990MB
selanjutnya jalankan aplikasi menggunakan docker run
dan expose pada port 80
docker run -p 80:8080 fastapi-app
aplikasi akan berjalan dan dapat ditemukan pada url berikut
https://#ID#.host.cloudtutor.io
gunakan browser disebelah kanan atau buka tab baru pada browser untuk mengecek aplikasi