Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .env.example
Original file line number Diff line number Diff line change
@@ -1 +1 @@
POLYGON_API_KEY=your_polygon_api_key
MONGO_URL=mongodb://mongodb:27017
28 changes: 28 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
FROM python:3.12-slim

WORKDIR /app

# Install dependencies
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
build-essential \
&& rm -rf /var/lib/apt/lists/*

# Install uv
RUN curl -LsSf https://astral.sh/uv/install.sh | sh && \
mv /root/.local/bin/uv /usr/local/bin/uv

# Ensure PATH includes /usr/local/bin
ENV PATH="/usr/local/bin:$PATH"

# Copy project files
COPY . .

# Run uv sync
RUN uv sync --frozen --no-cache

# Expose port
EXPOSE 50051

# Run the application
CMD ["uv", "run", "src/index.py"]
12 changes: 10 additions & 2 deletions src/index.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import logging
import os
import grpc
import proto.stock_pb2_grpc as stock_pb2_grpc
from concurrent import futures
Expand All @@ -11,16 +13,22 @@

load_dotenv()

logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO)



def serve():
client = MongoClient("mongodb://localhost:27017")
client = MongoClient(os.getenv("MONGO_URI"))
logger.info("connected to mongodb")

stock_repo = StockRepository(client, "stock_db")
portfolio_repo = PortfolioRepository(client, "stock_db")
stock_usecase = StockUsecase(stock_repo, portfolio_repo)
server = grpc.server(futures.ThreadPoolExecutor(max_workers=10))
stock_pb2_grpc.add_StockServiceServicer_to_server(StockService(stock_usecase), server)
server.add_insecure_port("[::]:50051")
print("server is running...")
logger.info("server is running...")
server.start()
server.wait_for_termination()

Expand Down