dev settings

FROM python:3.7-slim-buster AS builder-image

RUN apt-get update && apt-get -y install \\
    python3-dev default-libmysqlclient-dev gcc git && apt-get clean && rm -rf /var/lib/apt/lists/*

RUN python3.7 -m venv /home/cg-lab/venv
ENV PATH="/home/cg-lab/venv/bin:$PATH"

WORKDIR /app
COPY ./requirements.txt /app
RUN pip install --upgrade pip &&  mount=type=cache,mode=0755,target=/root/.cache pip3 install -r requirements.txt

FROM python:3.7-slim-buster AS runner-image
RUN apt-get update && apt-get -y install \\
    default-libmysqlclient-dev python3-venv && 	apt-get clean && rm -rf /var/lib/apt/lists/*

RUN useradd --create-home cg-lab
COPY --from=builder-image /home/cg-lab/venv /home/cg-lab/venv
USER cg-lab
RUN mkdir /home/cg-lab/app
WORKDIR /home/cg-lab/app
COPY . .

# make sure all messages always reach console
ENV PYTHONUNBUFFERED 1
ENV PYTHONDONTWRITEBYTECODE 1

EXPOSE 8000

ENV PORT 8000
ENV HOST 0.0.0.0

# activate virtual environment
ENV VIRTUAL_ENV=/home/cg-lab/venv
ENV PATH="/home/cg-lab/venv/bin:$PATH"

CMD ["gunicorn", "-b", "0.0.0.0:8000", "-w", "2",  "--worker-tmp-dir", "/dev/shm", "tac.wsgi.develop:application"]

compose settings for unit test

volumes:
    sg-database: {}
    billing-database: {}
    ticket-database: {}
    message-database: {}
    auth-database: {}

services:
    mysql-sg:
        image: mysql:5.7
        volumes:
            - sg-database:/var/lib/mysql
        environment:
            - MYSQL_USER=docker-test
            - MYSQL_PASSWORD=1234
            - MYSQL_DATABASE=test_gate
            - MYSQL_ROOT_PASSWORD=1234
        ports:
            - "33060:3306"
        command: [ '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']

    mysql-billing:
        image: mysql:5.7
        volumes:
            - billing-database:/var/lib/mysql
        environment:
            - MYSQL_USER=docker-test
            - MYSQL_PASSWORD=1234
            - MYSQL_DATABASE=test_billing
            - MYSQL_ROOT_PASSWORD=1234
        ports:
            - "33061:3306"
        command: [ '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']

    mysql-ticket:
        image: mysql:5.7
        volumes:
            - ticket-database:/var/lib/mysql
        environment:
            - MYSQL_USER=docker-test
            - MYSQL_PASSWORD=1234
            - MYSQL_DATABASE=test_ticket
            - MYSQL_ROOT_PASSWORD=1234
        ports:
            - "33062:3306"
        command: [ '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']

    mysql-message:
        image: mysql:5.7
        volumes:
            - message-database:/var/lib/mysql
        environment:
            - MYSQL_USER=docker-test
            - MYSQL_PASSWORD=1234
            - MYSQL_DATABASE=test_message
            - MYSQL_ROOT_PASSWORD=1234
        ports:
            - "33063:3306"
        command: [ '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']

    mysql-auth:
        image: mysql:5.7
        volumes:
            - auth-database:/var/lib/mysql
        environment:
            - MYSQL_USER=docker-test
            - MYSQL_PASSWORD=1234
            - MYSQL_DATABASE=test_total_admin_auth
            - MYSQL_ROOT_PASSWORD=1234
        ports:
            - "33064:3306"
        command: [ '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci']

api_settings

services:
    api:
      image: gcr.io/admin-center-329701/develop:latest
      command: "gunicorn -b 0.0.0.0:8000 -w 2 --worker-tmp-dir /dev/shm tac.wsgi.develop:application"
      ports:
        - 8000:8000
      restart: "on-failure"