wonderbeyond
6/29/2017 - 6:20 AM

docker compose for a Flask app(plus arangodb, celery_worker, celery_beat)

docker compose for a Flask app(plus arangodb, celery_worker, celery_beat)

version: '3'
services:
  web:
    build: .
    ports:
     - "8000:8000"
    links:
      - arangodb:myflask-arangodb
    depends_on:
      - arangodb
  celery_worker:
    build: .
    links:
      - arangodb:myflask-arangodb
    command: "celery -A myflask.application.celery worker -l INFO"
  celery_beat:
    build: .
    command: "celery -A myflask.application.celery beat -l INFO -s /var/lib/celerybeat/schedule.db"
    volumes:
      - "/var/lib/myflask/celery/beat:/var/lib/celerybeat:rw"
  arangodb:
    image: "arangodb"
    ports:
     - "8529:8529"
    environment:
      - ARANGO_NO_AUTH=True
    volumes:
      - "/var/lib/myflask/arangodb3:/var/lib/arangodb3:rw"
FROM python:2

RUN apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    python-dev \
    libpq-dev \
    libpcre3-dev \
    git \
    openssh-client

# for pip install from git repos.
COPY ./myflask-deploy.pem /root/.ssh/id_rsa
RUN chmod 400 /root/.ssh/id_rsa
RUN /bin/echo -e "Host *\n\tStrictHostKeyChecking no" > /root/.ssh/config

COPY ./requirements.txt /tmp/myflask.requirements.txt
RUN pip install --no-cache-dir -r /tmp/myflask.requirements.txt

# Web app source code
COPY . /usr/share/myflask
WORKDIR /usr/share/myflask

ENV APP_ENV=prod

ENV FLASK_APP=myflask/application.py

CMD [ \
    "gunicorn", \
    "--bind=0.0.0.0:8000", \
    "--worker-class=gthread", \
    "--workers=5", \
    "--threads=6", \
    "--access-logfile=-", \
    "myflask.application:app" \
]