Published November 10, 2020 by with 0 comment

Docker : Create image with Dockerfile (Lab 2)


 Hallo semua, Pada kesempatan kali ini kami akan share kelanjutan tentang Dockerfile yang kedua, jika belum melihatnya bisa mampir kesini. Langsung saja, berikut adalah langkah-langkahnya :

1. Membuat folder proyek

```bash
$ sudo mkdir -p /docker_train/latihan02
$ cd /docker_train/latihan02
```

2. Membuat Dockerfile

```bash
$ vim Dockerfile
```

```html
# menggunakan source image
FROM python:2.7-slim

# mengatur folder default app
WORKDIR /app

# menambahkan file yang ada di folder proyek ke dalam folder app image
ADD . /app

# Install package dari file konfigurasi tambahan
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Expose port untuk aplikasi
EXPOSE 80

# Mendefinisikan variabel
ENV NAME World

# Menjalankan program ketika container dijalankan
CMD ["python", "app.py"]
```

3. Buat file tambahan untuk aplikasi

```bash
$ vim requirements.txt

Flask
Redis
```

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

```python
from flask import Flask
from redis import Redis, RedisError
import os
import socket

# Connect to Redis
redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2)

app = Flask(__name__)

@app.route("/")
def hello():
    try:
        visits = redis.incr("counter")
    except RedisError:
        visits = "cannot connect to Redis, counter disabled"

    html = "

Hello {name}!

" \ "Hostname: {hostname}
" \ "Visits: {visits}" return html.format(name=os.getenv("NAME", "world"), hostname=socket.gethostname(), visits=visits) if __name__ == "__main__": app.run(host='0.0.0.0', port=80) ```

4. Bangun image dari Dockerfile

```bash
$ sudo docker build -t friendlyhello .
```

5. Tampilkan image yang sudah dibuat

```bash
$ sudo docker image ls
```

6. Menjalankan container  dengan image yang sudah dibuat

```bash
$ sudo docker run -d -p 4000:80 friendlyhello
$ curl http://localhost:4000
```


Yaps, sekian dulu tutorial kali ini, sampai jumpa di tutorial berikutnya!

      edit

0 comments:

Post a Comment