From 3755239b163f2f70879ee757f3d5637e9a3c6b09 Mon Sep 17 00:00:00 2001 From: Sarah Aligbe <37581442+Sarahligbe@users.noreply.github.com> Date: Thu, 8 Aug 2024 12:27:39 +0100 Subject: [PATCH] adjust docker compose files --- .github/workflows/cd.prod.yml | 8 ++--- .github/workflows/cd.staging.yml | 8 ++--- ...ompose.prod.yml => docker-compose.prod.yml | 0 ....staging.yml => docker-compose.staging.yml | 0 docker-compose.yml | 36 +++++++++++++++++++ docker/prod/Dockerfile | 25 ------------- docker/staging/Dockerfile | 25 ------------- 7 files changed, 44 insertions(+), 58 deletions(-) rename docker/prod/docker-compose.prod.yml => docker-compose.prod.yml (100%) rename docker/staging/docker-compose.staging.yml => docker-compose.staging.yml (100%) create mode 100644 docker-compose.yml delete mode 100644 docker/prod/Dockerfile delete mode 100644 docker/staging/Dockerfile diff --git a/.github/workflows/cd.prod.yml b/.github/workflows/cd.prod.yml index 0da4ee8d4..abe30d329 100644 --- a/.github/workflows/cd.prod.yml +++ b/.github/workflows/cd.prod.yml @@ -11,7 +11,7 @@ jobs: uses: actions/checkout@v3 - name: Build image - run: docker build -t anchor-python-bp-prod:latest -f docker/prod/Dockerfile . + run: docker build -t anchor-python-bp-prod:latest -f Dockerfile . - name: Save image run: docker save anchor-python-bp-prod:latest | gzip > prod.tar.gz @@ -23,7 +23,7 @@ jobs: username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} source: "prod.tar.gz" - target: "/home/${{ secrets.USERNAME }}/boilerplate-python/prod_source_code/docker/prod" + target: "/home/${{ secrets.USERNAME }}/boilerplate-python/prod_source_code" - name: Deploy image on server uses: appleboy/ssh-action@v0.1.8 @@ -32,8 +32,8 @@ jobs: username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} script: | - cd /home/${{ secrets.USERNAME }}/boilerplate-python/prod_source_code/docker/prod + cd /home/${{ secrets.USERNAME }}/boilerplate-python/prod_source_code git pull origin main docker load --input prod.tar.gz - docker-compose -f docker-compose.yml up -d + docker-compose -f docker-compose.prod.yml up -d rm -f prod.tar.gz diff --git a/.github/workflows/cd.staging.yml b/.github/workflows/cd.staging.yml index cf46991a3..81c6f8903 100644 --- a/.github/workflows/cd.staging.yml +++ b/.github/workflows/cd.staging.yml @@ -11,7 +11,7 @@ jobs: uses: actions/checkout@v3 - name: Build image - run: docker build -t anchor-python-bp-staging:latest -f docker/staging/Dockerfile . + run: docker build -t anchor-python-bp-staging:latest -f Dockerfile . - name: Save image run: docker save anchor-python-bp-staging:latest | gzip > staging.tar.gz @@ -23,7 +23,7 @@ jobs: username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} source: "staging.tar.gz" - target: "/home/${{ secrets.USERNAME }}/boilerplate-python/staging_source_code/docker/staging" + target: "/home/${{ secrets.USERNAME }}/boilerplate-python/staging_source_code" - name: Deploy image on server uses: appleboy/ssh-action@v0.1.8 @@ -32,8 +32,8 @@ jobs: username: ${{ secrets.USERNAME }} password: ${{ secrets.PASSWORD }} script: | - cd /home/${{ secrets.USERNAME }}/boilerplate-python/staging_source_code/docker/staging + cd /home/${{ secrets.USERNAME }}/boilerplate-python/staging_source_code git pull origin staging docker load --input staging.tar.gz - docker-compose -f docker-compose.yml up -d + docker-compose -f docker-compose.staging.yml up -d rm -f staging.tar.gz diff --git a/docker/prod/docker-compose.prod.yml b/docker-compose.prod.yml similarity index 100% rename from docker/prod/docker-compose.prod.yml rename to docker-compose.prod.yml diff --git a/docker/staging/docker-compose.staging.yml b/docker-compose.staging.yml similarity index 100% rename from docker/staging/docker-compose.staging.yml rename to docker-compose.staging.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 000000000..57cf66b4e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,36 @@ +services: + app_dev: + image: anchor-python-bp-dev:latest + command: ["sh", "-c", "alembic upgrade head && uvicorn main:app --host 0.0.0.0 --port 7001 --reload"] + container_name: app_dev + networks: + - hng-network + restart: unless-stopped + ports: + - 7006:7001 + working_dir: /app + volumes: + - .env:/app/.env + depends_on: + - dev_db + + dev_db: + image: postgres:14.12 + container_name: dev_db + restart: always + volumes: + - dev_db:/var/lib/postgresql/data + - .env:/app/.env + environment: + - POSTGRES_PASSWORD=${DB_PASSWORD?Variable not set} + - POSTGRES_USER=${DB_USER?Variable not set} + - POSTGRES_DB=${DB_NAME?Variable not set} + networks: + - hng-network + +volumes: + dev_db: + +networks: + hng-network: + driver: bridge \ No newline at end of file diff --git a/docker/prod/Dockerfile b/docker/prod/Dockerfile deleted file mode 100644 index 0a84aa847..000000000 --- a/docker/prod/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -# Use an official Python runtime as the base image -FROM python:3.12-alpine - -# Set environment variables -ENV PYTHONDONTWRITEBYTECODE=1 -ENV PYTHONUNBUFFERED=1 -ENV PYTHONPATH=/app -# Set the working directory in the container -WORKDIR /app - -# Install system dependencies -RUN apk add --no-cache curl - -#copy the requirements.txt file and install with pip -COPY ./requirements.txt /app/requirements.txt -RUN pip install --no-cache-dir --upgrade -r requirements.txt - -# Copy the rest of the backend files -COPY . /app/ - -# Expose the port the app runs on -EXPOSE 7001 - -# Command to run the application -CMD ["/bin/sh", "-c", "uvicorn main:app --host 0.0.0.0 --port 7001 --reload"] \ No newline at end of file diff --git a/docker/staging/Dockerfile b/docker/staging/Dockerfile deleted file mode 100644 index 0a84aa847..000000000 --- a/docker/staging/Dockerfile +++ /dev/null @@ -1,25 +0,0 @@ -# Use an official Python runtime as the base image -FROM python:3.12-alpine - -# Set environment variables -ENV PYTHONDONTWRITEBYTECODE=1 -ENV PYTHONUNBUFFERED=1 -ENV PYTHONPATH=/app -# Set the working directory in the container -WORKDIR /app - -# Install system dependencies -RUN apk add --no-cache curl - -#copy the requirements.txt file and install with pip -COPY ./requirements.txt /app/requirements.txt -RUN pip install --no-cache-dir --upgrade -r requirements.txt - -# Copy the rest of the backend files -COPY . /app/ - -# Expose the port the app runs on -EXPOSE 7001 - -# Command to run the application -CMD ["/bin/sh", "-c", "uvicorn main:app --host 0.0.0.0 --port 7001 --reload"] \ No newline at end of file