diff --git a/Dockerfile b/Dockerfile index 49434ff..7276c32 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,22 @@ FROM python:3 +# Download precompiled ttyd binary from GitHub releases +RUN apt-get update && \ + apt-get install -y wget && \ + wget https://github.com/tsl0922/ttyd/releases/download/1.6.3/ttyd.x86_64 -O /usr/bin/ttyd && \ + chmod +x /usr/bin/ttyd && \ + apt-get remove -y wget && \ + apt-get autoremove -y && \ + rm -rf /var/lib/apt/lists/* + WORKDIR /usr/src/app - -COPY requirements.txt ./ -RUN pip install --no-cache-dir -r requirements.txt - COPY . . - +RUN pip install --no-cache-dir -r requirements.txt RUN python -m venv pilot-env -RUN source pilot-env/bin/activate -RUN pip install -r requirements.txt -RUN python ./pilot/db_init.py +RUN /bin/bash -c "source pilot-env/bin/activate" -CMD [ "python", "./pilot/main.py" ] +WORKDIR /usr/src/app/pilot +RUN pip install -r requirements.txt + +EXPOSE 7681 +CMD ["ttyd", "bash"] \ No newline at end of file diff --git a/README.md b/README.md index 2c43b00..94bf04b 100644 --- a/README.md +++ b/README.md @@ -64,6 +64,15 @@ All generated code will be stored in the folder `workspace` inside the folder na **IMPORTANT: To run GPT Pilot, you need to have PostgreSQL set up on your machine**
+# 🐳 How to start gpt-pilot in docker? +1. `git clone https://github.com/Pythagora-io/gpt-pilot.git` (clone the repo) +2. Update the `docker-compose.yml` environment variables +3. run `docker compose build`. this will build a gpt-pilot container for you. +4. run `docker compose up`. +5. access web terminal on `port 7681` + +This will start two containers, one being a new image built by the `Dockerfile` and a postgres database. The new image also has (ttyd)[https://github.com/tsl0922/ttyd] installed so you can easily interact with gpt-pilot. + # 🧑‍💻️ Other arguments - continue working on an existing app ```bash diff --git a/docker-compose.yml b/docker-compose.yml index b8a54d6..6347f7f 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,33 +2,39 @@ version: '3' services: gpt-pilot: environment: + #OPENAI or AZURE - ENDPOINT=OPENAI - OPENAI_API_KEY= + # - AZURE_API_KEY= + # - AZURE_ENDPOINT= + #In case of Azure endpoint, change this to your deployed model name - MODEL_NAME=gpt-4 - MAX_TOKENS=8192 - - DB_NAME=gpt-pilot + - DATABASE_TYPE=postgres + - DB_NAME=pilot - DB_HOST=postgres - DB_PORT=5432 - - DB_USER=gpt-pilot - - DB_PASSWORD=gpt-pilot + - DB_USER=pilot + - DB_PASSWORD=pilot build: context: . dockerfile: Dockerfile - pgadmin: - container_name: pgadmin4_container - image: dpage/pgadmin4 - restart: always - environment: - PGADMIN_DEFAULT_EMAIL: admin@admin.com - PGADMIN_DEFAULT_PASSWORD: gpt-pilot ports: - - "5050:80" + - "7681:7681" + depends_on: + postgres: + condition: service_healthy postgres: image: postgres restart: always environment: - POSTGRES_USER: gpt-pilot - POSTGRES_PASSWORD: gpt-pilot - POSTGRES_DB: gpt-pilot + POSTGRES_USER: pilot + POSTGRES_PASSWORD: pilot + POSTGRES_DB: pilot ports: - "5432:5432" + healthcheck: + test: ["CMD-SHELL", "pg_isready -U user"] + interval: 30s + timeout: 10s + retries: 3