Skip to content
This repository has been archived by the owner on Nov 13, 2024. It is now read-only.

Commit

Permalink
Improve docker integration
Browse files Browse the repository at this point in the history
  • Loading branch information
izellevy committed Dec 28, 2023
1 parent e9cef6e commit 735509f
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 17 deletions.
18 changes: 13 additions & 5 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
# syntax=docker/dockerfile:1
# Keep this syntax directive! It's used to enable Docker BuildKit

ARG PYTHON_VERSION=3.11.7
ARG PORT=8000
################################
# PYTHON-BASE
# Sets up all our shared environment variables
################################
FROM python:3.11.7-slim as python-base
FROM python:${PYTHON_VERSION}-slim as python-base

# Python
ENV PYTHONUNBUFFERED=1 \
Expand Down Expand Up @@ -84,8 +86,9 @@ RUN --mount=type=cache,target=/root/.cache \
COPY . .
RUN poetry install --all-extras --only-root

ARG PORT
EXPOSE $PORT

EXPOSE 8000
CMD ["bash"]


Expand All @@ -97,6 +100,10 @@ FROM python-base as production

ENV WORKER_COUNT=1

LABEL org.opencontainers.image.source="https://github.com/pinecone-io/canopy"
LABEL org.opencontainers.image.description="Image containing the canopy server."
LABEL org.opencontainers.image.licenses="Apache-2.0"

RUN DEBIAN_FRONTEND=noninteractive apt-get update && \
apt-get install -y --no-install-recommends \
ca-certificates && \
Expand All @@ -116,8 +123,9 @@ COPY config/ config/
RUN touch README.md
RUN poetry install --all-extras --only-root

EXPOSE 8000

CMD ["sh", "-c", "gunicorn canopy_server.app:app --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:8000 --workers $WORKER_COUNT"]
ARG PORT
EXPOSE $PORT
ENV PORT $PORT
CMD ["sh", "-c", "gunicorn canopy_server.app:app --worker-class uvicorn.workers.UvicornWorker --bind 0.0.0.0:$PORT --workers $WORKER_COUNT"]


29 changes: 17 additions & 12 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,18 @@
IMAGE_NAME = canopy
DOCKERFILE_DIR = .
COMMON_BUILD_ARGS = --progress plain
EXTRA_BUILD_ARGS =
IMAGE_VERSION = $(shell poetry version -s)
PORT = 8000
ENV_FILE = .env
TEST_WORKER_COUNT = 8

REGISTRY = ghcr.io
NAMESPACE = pinecone-io
IMAGE_NAME = canopy
REPOSITORY = $(REGISTRY)/$(NAMESPACE)/$(IMAGE_NAME)

IMAGE_TAG = $(shell poetry version -s)
CONTAINER_PORT = 8000
CONTAINER_ENV_FILE = .env
CONTAINER_BUILD_DIR = .
CONTAINER_COMMON_BUILD_ARGS = --progress plain
CONTAINER_EXTRA_BUILD_ARGS =


.PHONY: lint static test test-unit test-system test-e2e docker-build docker-build-dev docker-run docker-run-dev help

lint:
Expand All @@ -29,20 +35,19 @@ test-e2e:

docker-build:
@echo "Building Docker image..."
docker build $(COMMON_BUILD_ARGS) $(EXTRA_BUILD_ARGS) -t $(IMAGE_NAME):$(IMAGE_VERSION) $(DOCKERFILE_DIR)
docker build $(CONTAINER_COMMON_BUILD_ARGS) $(CONTAINER_EXTRA_BUILD_ARGS) --build-arg PORT=$(CONTAINER_PORT) -t $(REPOSITORY):$(IMAGE_TAG) $(CONTAINER_BUILD_DIR)
@echo "Docker build complete."

docker-build-dev:
@echo "Building Docker image for development..."
docker build $(COMMON_BUILD_ARGS) $(EXTRA_BUILD_ARGS) -t $(IMAGE_NAME)-dev:$(IMAGE_VERSION) --target=development $(DOCKERFILE_DIR)
docker build $(CONTAINER_COMMON_BUILD_ARGS) $(CONTAINER_EXTRA_BUILD_ARGS) --build-arg PORT=$(CONTAINER_PORT) -t $(REPOSITORY)-dev:$(IMAGE_TAG) --target=development $(CONTAINER_BUILD_DIR)
@echo "Development Docker build complete."

docker-run:
docker run --env-file $(ENV_FILE) -p $(PORT):$(PORT) $(IMAGE_NAME):$(IMAGE_VERSION)
docker run --env-file $(CONTAINER_ENV_FILE) -p $(CONTAINER_PORT):$(CONTAINER_PORT) $(REPOSITORY):$(IMAGE_TAG)

docker-run-dev:
docker run -it --env-file $(ENV_FILE) -p $(PORT):$(PORT) $(IMAGE_NAME)-dev:$(IMAGE_VERSION)

docker run -it --env-file $(CONTAINER_ENV_FILE) -p $(CONTAINER_PORT):$(CONTAINER_PORT) $(REPOSITORY)-dev:$(IMAGE_TAG)

help:
@echo "Available targets:"
Expand Down

0 comments on commit 735509f

Please sign in to comment.