Add dockerfiler & docker compose

This commit is contained in:
Jonathan Adly 2023-11-16 13:08:18 -05:00
parent a776ce53cb
commit fdd3880162
6 changed files with 101 additions and 0 deletions

2
.gitignore vendored
View File

@ -2,3 +2,5 @@
# Run logs
backend/run_logs/*
.env

View File

@ -38,6 +38,22 @@ Open http://localhost:5173 to use the app.
If you prefer to run the backend on a different port, update VITE_WS_BACKEND_URL in `frontend/.env.local`
## Docker
```bash
echo "OPENAI_API_KEY=sk-your-key" > .env
docker-compose up -d --build
```
If you want to change the backend port to something other than 7000 (default) - for example, 7001. Then:
1. `echo "BACKEND_PORT=7001"`
2. `echo VITE_WS_BACKEND_URL=ws://127.0.0.1:7001 > frontend/.env.local`
Port 7000 sometimes is used by Airplay if you are on a mac. This will solve the docker error "Ports are not available... address already in use"
Application will be up and running at http://localhost:5173
## Feedback
If you have feature requests, bug reports or other feedback, open an issue or ping me on [Twitter](https://twitter.com/_abi_).

35
backend/Dockerfile Normal file
View File

@ -0,0 +1,35 @@
FROM python:3.12-slim-bullseye
#ARG YOUR_ENV # Set your environment variable (prod vs. dev)
# Set environment variables
ENV PYTHONFAULTHANDLER 1
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
ENV PYTHONHASHSEED random
ENV PIP_NO_CACHE_DIR off
ENV PIP_DISABLE_PIP_VERSION_CHECK on
ENV PIP_DEFAULT_TIMEOUT 100
ENV POETRY_VERSION 1.4.1
#ENV ENVIRONMENT $YOUR_ENV
# Install system dependencies
RUN pip install "poetry==$POETRY_VERSION"
# Set work directory
WORKDIR /app
# Copy only requirements to cache them in docker layer
COPY poetry.lock pyproject.toml /app/
# Disable the creation of virtual environments
RUN poetry config virtualenvs.create false
# Install dependencies
RUN poetry install
# if you have dev dependencies and runnning in production
#poetry install $(test "$YOUR_ENV" == production && echo "--no-dev") --no-interaction --no-ansi
# Copy the current directory contents into the container at /app
COPY ./ /app/

27
docker-compose.yml Normal file
View File

@ -0,0 +1,27 @@
version: '3.9'
services:
backend:
build:
context: ./backend
dockerfile: Dockerfile
env_file:
- .env
# or
# environment:
#- BACKEND_PORT=7000 # if you change the port, make sure to also change the VITE_WS_BACKEND_URL at frontend/.env.local
# - OPENAI_API_KEY=your_openai_api_key
ports:
- "${BACKEND_PORT:-7000}:${BACKEND_PORT:-7000}"
command: poetry run uvicorn main:app --host 0.0.0.0 --port ${BACKEND_PORT:-7000}
frontend:
build:
context: ./frontend
dockerfile: Dockerfile
ports:
- "5173:5173"

2
frontend/.env.example Normal file
View File

@ -0,0 +1,2 @@
# example for change the backend port to 7001 to deal with issue: https://developer.apple.com/forums/thread/682332
VITE_WS_BACKEND_URL=ws://127.0.0.1:7001

19
frontend/Dockerfile Normal file
View File

@ -0,0 +1,19 @@
FROM node:20.9-bullseye-slim
# Set the working directory in the container
WORKDIR /app
# Copy package.json and yarn.lock
COPY package.json yarn.lock /app/
# Install dependencies
RUN yarn install
# Copy the current directory contents into the container at /app
COPY ./ /app/
# Expose port 5173 to access the server
EXPOSE 5173
# Command to run the application
CMD ["yarn", "dev", "--host", "0.0.0.0"]