Published November 21, 2020 by with 0 comment

Docker : Deploy python app with Docker compose


 Halo semua, pada kesempatan kali ini. Kami akan share tutorial medeploy aplikasi python dengan menggunakan docker compose, kalau kita sebelumnya deploy wordpress dengan docker compose, kali ini kita coba deploy aplikasi buatan kita yang menggunakan bahasa pemogram python pada contoh kali ini, untuk langkah-langkahnya sebagai berikut :

1. Buat folder proyek

```bash
$ mkdir my_app; cd my_app
```

2. Buat file aplikasi

```bash
$ vim app.py
```

```python
import time

import redis
from flask import Flask


app = Flask(__name__)
cache = redis.Redis(host='redis', port=6379)


def get_hit_count():
    retries = 5
    while True:
        try:
            return cache.incr('hits')
        except redis.exceptions.ConnectionError as exc:
            if retries == 0:
                raise exc
            retries -= 1
            time.sleep(0.5)


@app.route('/')
def hello():
    count = get_hit_count()
    return 'Hello World! I have been seen {} times.\n'.format(count)

if __name__ == "__main__":
    app.run(host="0.0.0.0", debug=True)
```

3. Buat file requirement

```bash
$ vim requirements.txt
```
```plaintext
flask
redis
```

4. Buat Dockerfile untuk image

```bash
$ vim Dockerfile
```
```bash
FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["python", "app.py"]
```

5. Buat docker compose untuk konfigurasi

```bash
$ vim docker-compose.yml
```
```yaml
version: '3.2'
services:
  web:
    build: .
    ports:
     - "5000:5000"
    volumes:
     - .:/code
  redis:
    image: "redis:alpine"
```

6. Jalankan docker compose

```bash
$ sudo docker-compose up -d
```

7. verifikasi

```bash
$ curl http://localhost:5000

# check docker-compose aktif
$ sudo docker-compose ps
# check environment aplikasi
$ sudo docker-compose run web env
```

Kalau kita check via browser


8. Hapus aplikasi

```bash
$ sudo docker-compose down --volumes
```

Yaps, sampai jumpa di tutorial berikutnya !

      edit

0 comments:

Post a Comment