From ec105a5c9b58dfdbc3f631ee088a00fe9c236867 Mon Sep 17 00:00:00 2001 From: MacBook Pro Date: Thu, 14 Nov 2024 09:07:19 +0300 Subject: [PATCH] Add Dockerfile - add dockerignore - add docker-compose - add requirements.txt --- .dockerignore | 27 +++++++++++++++++++++++++++ Dockerfile | 25 +++++++++++++++++++++++++ docker-compose.debug.yml | 12 ++++++++++++ docker-compose.yml | 29 +++++++++++++++++++++++++++++ requirements.txt | 3 +++ 5 files changed, 96 insertions(+) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.debug.yml create mode 100644 docker-compose.yml create mode 100644 requirements.txt diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0b1e1e7 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,27 @@ +**/__pycache__ +**/.venv +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/bin +**/charts +**/docker-compose* +**/compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..dca346c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,25 @@ +# For more information, please refer to https://aka.ms/vscode-docker-python +FROM python:3-slim + +EXPOSE 8000 + +# Keeps Python from generating .pyc files in the container +ENV PYTHONDONTWRITEBYTECODE=1 + +# Turns off buffering for easier container logging +ENV PYTHONUNBUFFERED=1 + +# Install pip requirements +COPY requirements.txt . +RUN python -m pip install -r requirements.txt + +WORKDIR /app +COPY . /app + +# Creates a non-root user with an explicit UID and adds permission to access the /app folder +# # For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers +# RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app +# USER appuser + +# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug +CMD ["gunicorn", "--bind", "0.0.0.0:8000", "-k", "uvicorn.workers.UvicornWorker", "main:app", "--reload"] diff --git a/docker-compose.debug.yml b/docker-compose.debug.yml new file mode 100644 index 0000000..fd2ad34 --- /dev/null +++ b/docker-compose.debug.yml @@ -0,0 +1,12 @@ +version: '3.4' + +services: + newapp: + image: newapp + build: + context: . + dockerfile: ./Dockerfile + command: ["sh", "-c", "pip install debugpy -t /tmp && python /tmp/debugpy --wait-for-client --listen 0.0.0.0:5678 -m uvicorn main:app --host 0.0.0.0 --port 8000"] + ports: + - 8000:8000 + - 5678:5678 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..87d2240 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,29 @@ +version: '3.9' + +services: + app: + build: + context: . + dockerfile: Dockerfile + container_name: fastapi_app + ports: + - "8000:8000" + depends_on: + - db + # environment: + # - DATABASE_URL=postgresql://postgres:password@db:5432/mydatabase # URL подключения к БД + + db: + image: postgres + container_name: postgres_db + environment: + POSTGRES_USER: app_admin + POSTGRES_PASSWORD: pswd + POSTGRES_DB: devops_app_database + ports: + - "5432:5432" + volumes: + - postgres_data:/var/lib/postgresql/data + +volumes: + postgres_data: diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..4ec3ee2 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,3 @@ +fastapi==0.95.1 +uvicorn[standard]==0.22.0 +asyncpg==0.27.0 \ No newline at end of file