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"