Browse Source

Merge pull request #311 from dockersamples/fix-python-reloading

Fix file mounts (work dir change) and python reloading
Michael Irwin 1 year ago
parent
commit
8b0f5ad514
2 changed files with 18 additions and 8 deletions
  1. 5 5
      docker-compose.yml
  2. 13 3
      vote/Dockerfile

+ 5 - 5
docker-compose.yml

@@ -4,9 +4,9 @@
 
 services:
   vote:
-    build: ./vote
-    # use python rather than gunicorn for local dev
-    command: python app.py
+    build: 
+      context: ./vote
+      target: dev
     depends_on:
       redis:
         condition: service_healthy
@@ -17,7 +17,7 @@ services:
       retries: 3
       start_period: 10s
     volumes:
-     - ./vote:/app
+     - ./vote:/usr/local/app
     ports:
       - "5000:80"
     networks:
@@ -32,7 +32,7 @@ services:
       db:
         condition: service_healthy 
     volumes:
-      - ./result:/app
+      - ./result:/usr/local/app
     ports:
       - "5001:80"
       - "127.0.0.1:9229:9229"

+ 13 - 3
vote/Dockerfile

@@ -1,7 +1,7 @@
-# Using official python runtime base image
-FROM python:3.11-slim
+# Define a base stage that uses the official python runtime base image
+FROM python:3.11-slim AS base
 
-# add curl for healthcheck
+# Add curl for healthcheck
 RUN apt-get update && \
     apt-get install -y --no-install-recommends curl && \
     rm -rf /var/lib/apt/lists/*
@@ -13,6 +13,16 @@ WORKDIR /usr/local/app
 COPY requirements.txt ./requirements.txt
 RUN pip install --no-cache-dir -r requirements.txt
 
+# Define a stage specifically for development, where it'll watch for
+# filesystem changes
+FROM base AS dev
+RUN pip install watchdog
+ENV FLASK_ENV=development
+CMD ["python", "app.py"]
+
+# Define the final stage that will bundle the application for production
+FROM base AS final
+
 # Copy our code from the current folder to the working directory inside the container
 COPY . .