Cara Membuat Server Flask dengan Nginx, MongoDB dan Docker
Flask bagi yang belum tahu adalah web framework berbasis bahasa pemrograman python. Salah satu framework populer ini memang sangat mudah digunakan. Pada tutorial kali ini, kita akan menginstall Flask Framework dengan Docker. Docker sendiri memungkinkan kita membuat lingkungan development yang sama pengalamannya dan mudah pengalamannya.
Syarat:
- punya akun root atau akun non-root dengan kemampuan sudo,
- sudah terinstall docker dan docker compose
- koneksi internet
Langkah 1: Buat file Docker Compose
Buat sebuah folder dengan nama flaskapp misalnya, lalu buat file docker-compose.yml dengan konten seperti ini:
version: '3' services: flask: build: context: app dockerfile: Dockerfile container_name: flask image: digitalocean.com/flask-python:3.6 restart: unless-stopped environment: APP_ENV: "prod" APP_DEBUG: "False" APP_PORT: 5000 MONGODB_DATABASE: flaskdb MONGODB_USERNAME: flaskuser MONGODB_PASSWORD: your_mongodb_password MONGODB_HOSTNAME: mongodb volumes: - appdata:/var/www depends_on: - mongodb networks: - frontend - backend mongodb: image: mongo:4.0.8 container_name: mongodb restart: unless-stopped command: mongod --auth environment: MONGO_INITDB_ROOT_USERNAME: mongodbuser MONGO_INITDB_ROOT_PASSWORD: your_mongodb_root_password MONGO_INITDB_DATABASE: flaskdb MONGODB_DATA_DIR: /data/db MONDODB_LOG_DIR: /dev/null volumes: - mongodbdata:/data/db networks: - backend webserver: build: context: nginx dockerfile: Dockerfile image: digitalocean.com/webserver:latest container_name: webserver restart: unless-stopped environment: APP_ENV: "prod" APP_NAME: "webserver" APP_DEBUG: "true" SERVICE_NAME: "webserver" ports: - "80:80" - "443:443" volumes: - nginxdata:/var/log/nginx depends_on: - flask networks: - frontend networks: frontend: driver: bridge backend: driver: bridge volumes: mongodbdata: driver: local appdata: driver: local nginxdata: driver: local
Langkah 2: Bikin Template Server Flask dengan Dockerfile
Pada folder diatas tadi, silakan bikin folder app lalu bikin file Dockerfile dengan konten:
FROM python:3.6.8-alpine3.9 LABEL MAINTAINER="FirstName LastName <[email protected]>" ENV GROUP_ID=1000 \ USER_ID=1000 WORKDIR /var/www/ ADD . /var/www/ RUN pip install -r requirements.txt RUN pip install gunicorn RUN addgroup -g $GROUP_ID www RUN adduser -D -u $USER_ID -G www www -s /bin/sh USER www EXPOSE 5000 CMD [ "gunicorn", "-w", "4", "--bind", "0.0.0.0:5000", "wsgi"]
pada folder /flaskapp buat folder nginx, kemudian file Dockerfile:
FROM digitalocean.com/alpine:latest LABEL MAINTAINER="FirstName LastName <[email protected]>" RUN apk --update add nginx && \ ln -sf /dev/stdout /var/log/nginx/access.log && \ ln -sf /dev/stderr /var/log/nginx/error.log && \ mkdir /etc/nginx/sites-enabled/ && \ mkdir -p /run/nginx && \ rm -rf /etc/nginx/conf.d/default.conf && \ rm -rf /var/cache/apk var WPGroHo = {"my_hash":""};%d bloggers like this: