nginx-flask-mysql: add dev envs support (#272)
* Add Docker Desktop Development Environments config * Change port `5000` -> `8000` for Flask to avoid conflicts on recent macOS versions * Improve DB health check (for non-dev envs case) to avoid producing a bunch of log spam Co-authored-by: Guillaume Lours <guillaume@lours.me> Signed-off-by: Milas Bowman <milas.bowman@docker.com>pull/228/merge
parent
20089c790b
commit
111c55d56b
@ -0,0 +1,61 @@ |
|||||||
|
services: |
||||||
|
db: |
||||||
|
image: mariadb:10-focal |
||||||
|
command: '--default-authentication-plugin=mysql_native_password' |
||||||
|
restart: always |
||||||
|
healthcheck: |
||||||
|
test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"] |
||||||
|
interval: 3s |
||||||
|
retries: 5 |
||||||
|
start_period: 30s |
||||||
|
secrets: |
||||||
|
- db-password |
||||||
|
volumes: |
||||||
|
- db-data:/var/lib/mysql |
||||||
|
networks: |
||||||
|
- backnet |
||||||
|
environment: |
||||||
|
- MYSQL_DATABASE=example |
||||||
|
- MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db-password |
||||||
|
expose: |
||||||
|
- 3306 |
||||||
|
- 33060 |
||||||
|
|
||||||
|
backend: |
||||||
|
build: |
||||||
|
context: backend |
||||||
|
target: dev-envs |
||||||
|
restart: always |
||||||
|
volumes: |
||||||
|
- /var/run/docker.sock:/var/run/docker.sock |
||||||
|
secrets: |
||||||
|
- db-password |
||||||
|
ports: |
||||||
|
- 8000:8000 |
||||||
|
networks: |
||||||
|
- backnet |
||||||
|
- frontnet |
||||||
|
depends_on: |
||||||
|
db: |
||||||
|
condition: service_healthy |
||||||
|
|
||||||
|
proxy: |
||||||
|
build: proxy |
||||||
|
restart: always |
||||||
|
ports: |
||||||
|
- 80:80 |
||||||
|
depends_on: |
||||||
|
- backend |
||||||
|
networks: |
||||||
|
- frontnet |
||||||
|
|
||||||
|
volumes: |
||||||
|
db-data: |
||||||
|
|
||||||
|
secrets: |
||||||
|
db-password: |
||||||
|
file: db/password.txt |
||||||
|
|
||||||
|
networks: |
||||||
|
backnet: |
||||||
|
frontnet: |
@ -1,8 +1,35 @@ |
|||||||
FROM python:3.8-alpine |
# syntax=docker/dockerfile:1.4 |
||||||
|
FROM --platform=$BUILDPLATFORM python:3.10-alpine AS builder |
||||||
|
|
||||||
WORKDIR /code |
WORKDIR /code |
||||||
COPY requirements.txt /code/ |
COPY requirements.txt /code |
||||||
RUN pip install -r requirements.txt --no-cache-dir |
RUN --mount=type=cache,target=/root/.cache/pip \ |
||||||
COPY . /code/ |
pip3 install -r requirements.txt |
||||||
|
|
||||||
|
COPY . . |
||||||
|
|
||||||
ENV FLASK_APP hello.py |
ENV FLASK_APP hello.py |
||||||
CMD flask run --host=0.0.0.0 |
ENV FLASK_ENV development |
||||||
|
ENV FLASK_RUN_PORT 8000 |
||||||
|
ENV FLASK_RUN_HOST 0.0.0.0 |
||||||
|
|
||||||
|
EXPOSE 8000 |
||||||
|
|
||||||
|
CMD ["flask", "run"] |
||||||
|
|
||||||
|
FROM builder AS dev-envs |
||||||
|
|
||||||
|
RUN <<EOF |
||||||
|
apk update |
||||||
|
apk add git |
||||||
|
EOF |
||||||
|
|
||||||
|
RUN <<EOF |
||||||
|
addgroup -S docker |
||||||
|
adduser -S --shell /bin/bash --ingroup docker vscode |
||||||
|
EOF |
||||||
|
|
||||||
|
# install Docker tools (cli, buildx, compose) |
||||||
|
COPY --from=gloursdocker/docker / / |
||||||
|
|
||||||
|
CMD ["flask", "run"] |
||||||
|
Loading…
Reference in new issue