# Fast API

## Menyiapkan Project

Clone react application yang akan di deploy dan masuk ke dalam directory tersebut. Jika belum ada, buat project terlebih dahulu.&#x20;

## Menyiapkan File Docker

Siapkan beberapa file docker yang diperlukan

<table><thead><tr><th width="232.50000000000003">File</th><th>Deskripsi</th></tr></thead><tbody><tr><td><a href="#dockerfile">Dockerfile</a></td><td>berisi file konfigurasi dari docker</td></tr><tr><td><a href="#.dockerignore">.dockerignore</a></td><td>list file dan directory yang diabaikan</td></tr><tr><td><a href="#docker-compose.yml">docker-compose.yml</a></td><td>mendefinisikan dan menjalankan aplikasi multi-kontainer Docker</td></tr></tbody></table>

### Dockerfile

Pada directory utama, buat file `Dockerfile`

{% code title="Dockerfile" lineNumbers="true" %}

```dockerfile
# Gunakan image Python dari Docker Hub sebagai dasar
FROM python:3.10-slim

# Set working directory di dalam container
WORKDIR /app

# Salin requirements.txt dan instal dependensi Python
COPY requirements.txt .
RUN pip install -r requirements.txt
RUN pip install jinja2
RUN pip install python-multipart

# Salin seluruh proyek Anda ke dalam container
COPY . .

# Jalankan aplikasi FastAPI
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]
```

{% endcode %}

### .dockerignore

Pada directory utama, buat file `.dockerignore`

{% code title=".dockerignore" lineNumbers="true" %}

```ignore
__pycache__
.vscode
```

{% endcode %}

### docker-compose.yml

Pada directory utama, buat file `docker-compose.yml`

{% code title="docker-compose.yml" lineNumbers="true" %}

```yaml
version: '3'
services:
  web:
    build:
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    volumes:
      - .:/app
```

{% endcode %}

## Menjalankan Container

Build image dan jalankan container

```
docker compose up -d --build
```

Seharusnya aplikasi sudah bisa berjalan, buka browser dan akses IP server dengan port 8000 *(*[*http://127.0.0.1:8000*](http://127.0.0.1:5000)*)*.&#x20;

***

## Referensi

{% embed url="<https://ikantongkol.gitbook.io/product-docs/devops-documentation/docker/dockerize-laravel-application>" %}
ikantongkol.gitbook.io
{% endembed %}
