From c6e9b1cfb6d7240483fcca33a30d553b8e940d79 Mon Sep 17 00:00:00 2001 From: Shubham Verlekar Date: Thu, 16 Feb 2023 03:34:42 +0530 Subject: [PATCH 1/5] Update setup instructions and environment variables - Upgrade pip, setuptools, and wheel - Install dependencies - Add environment variables for OpenAI API token, Discord bot token, debug guild and channel, allowed guilds, admin roles, Dalle roles, GPT roles, welcome message, user input API keys, moderation alert channel, and user key DB path - Set volume mounts for container and shared folder - Raise the amount of returned recordings from 10 to 100 - Add docker and docker-compose installation instructions [Dockerfile] - Add OpenAI token, Discord token, Pinecone token, debug guild, debug channel, allowed guilds, admin roles, dalle roles, GPT roles, welcome message, user input API keys, moderation alert channel, and user key database path environment variables - Upgrade pip, setuptools, and wheel - Install dependencies - Copy minimal files to main image [docker-compose.yml] - Add Docker Compose configuration for GPT3Discord - Set environment variables for OpenAI API token, Discord bot token, debug guild and channel, allowed guilds, admin roles, Dalle roles, GPT roles, welcome message, user input API keys, moderation alert channel, and user key DB path - Set volume mounts for container and shared folder [README.md] - Raise the amount of returned recordings from 10 to 100 - Add docker and docker-compose installation instructions - Add environment variables to docker-compose.yml - Add instructions for non-server, non-docker installation (Windows included) --- Dockerfile | 18 ++++++++++++++++++ README.md | 47 ++++++++++++++++++++++++++++++++++++++++++++-- docker-compose.yml | 22 ++++++++++++++++++++++ sample.env | 2 +- 4 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 docker-compose.yml diff --git a/Dockerfile b/Dockerfile index d49d566..6a67690 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,5 +1,7 @@ ARG PY_VERSION=3.9 + + # Build container FROM python:${PY_VERSION} as base FROM base as builder @@ -17,6 +19,7 @@ RUN apt-get update RUN curl https://sh.rustup.rs -sSf | bash -s -- -y ENV PATH="/root/.cargo/bin:${PATH}" + RUN mkdir /install /src WORKDIR /install RUN pip install --target="/install" --upgrade pip setuptools wheel @@ -40,6 +43,21 @@ RUN pip install --target="/install" /src # Copy minimal to main image (to keep as small as possible) FROM python:${PY_VERSION}-slim + +ENV OPENAI_TOKEN="" +ENV DISCORD_TOKEN="" +ENV PINECONE_TOKEN="" +ENV DEBUG_GUILD="" +ENV DEBUG_CHANNEL="" +ENV ALLOWED_GUILDS="" +ENV ADMIN_ROLES="" +ENV DALLE_ROLES="" +ENV GPT_ROLES="" +ENV WELCOME_MESSAGE="" +ENV USER_INPUT_API_KEYS="" +ENV MODERATIONS_ALERT_CHANNEL="" +ENV USER_KEY_DB_PATH="" + ARG PY_VERSION COPY . . COPY --from=builder /install /usr/local/lib/python${PY_VERSION}/site-packages diff --git a/README.md b/README.md index 16cffe3..e326d04 100644 --- a/README.md +++ b/README.md @@ -415,7 +415,7 @@ As a last resort, you can try to run the bot using python in a basic way, with s cd (the folder where the files for GPT3Discord are located/cloned) python3.9 gpt3discord.py ``` - + + +### Docker and Docker Compose : +To use docker you can use the following command +``` +docker run -d --name gpt3discord -v /containers/gpt3discord:/data -v /containers/gpt3discord/share:/data/share --env-file /path/to/.env gpt3discord:latest +``` +Make sure that the /data and /data/share are created and the `env-file` path is correct. + + + + + +#### Docker Compose +To use Docker Compose, you need to have Docker and Docker Compose installed on your system. You can download and install them from the following links: + +- Docker +- Docker Compose + +[You will need to install Docker for Desktop if you are on a desktop machine such as Windows or Mac, trying to run this] + + +To start the gpt3discord container with Docker Compose, follow these steps: + +1. Open a terminal or command prompt and navigate to the directory that contains the docker-compose.yml file. +2. Open the docker-compose.yml file and replace the environment variable values with your actual tokens and IDs. +3. Run the following command to start the container in detached mode: + +``` +Copy codedocker-compose up -d +``` + +This will start the container and use the settings in the docker-compose.yml file. The -d option tells Docker Compose to run the container in the background (detached mode). + + +To stop the gpt3discord container, run the following command: + +``` +Copy codedocker-compose down +``` + +This will stop the container and remove the services and networks defined in the docker-compose.yml file. + +That's it! With these simple steps, you can start and stop the gpt3discord container using Docker Compose. ### Non-Server, Non-Docker installation (Windows included) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..c45c697 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.8' +services: + gpt3discord: + image: gpt3discord:latest + container_name: gpt3discord + environment: + OPENAI_TOKEN: "" + DISCORD_TOKEN: "" + DEBUG_GUILD: "974519864045756446" + DEBUG_CHANNEL: "977697652147892304" + ALLOWED_GUILDS: "971268468148166697,971268468148166697" + ADMIN_ROLES: "Admin,Owner" + DALLE_ROLES: "Admin,Openai,Dalle,gpt" + GPT_ROLES: "openai,gpt" + WELCOME_MESSAGE: "Hi There! Welcome to our Discord server. We hope you'll enjoy our server and we look forward to engaging with you!" + USER_INPUT_API_KEYS: "False" + MODERATIONS_ALERT_CHANNEL: "977697652147892304" + USER_KEY_DB_PATH: "user_key_db.sqlite" + volumes: + - /containers/gpt3discord:/data + - /containers/gpt3discord/share:/data/share + restart: always diff --git a/sample.env b/sample.env index 0be17d6..b50a2d4 100644 --- a/sample.env +++ b/sample.env @@ -22,4 +22,4 @@ USER_INPUT_API_KEYS="False" # If True, users must use their own API keys for Ope MODERATIONS_ALERT_CHANNEL = "977697652147892304" # User API key db path configuration. This is where the user API keys will be stored. -USER_KEY_DB_PATH = "user_key_db.sqlite" +USER_KEY_DB_PATH = "user_key_db.sqlite" \ No newline at end of file From 8e570e67ad31cec97768cae2e78ba3eb24454a64 Mon Sep 17 00:00:00 2001 From: Connor Shubham Verlekar <63520509+connorv001@users.noreply.github.com> Date: Thu, 16 Feb 2023 03:36:36 +0530 Subject: [PATCH 2/5] Create build-and-publish-docker.yml Signed-off-by: Connor Shubham Verlekar <63520509+connorv001@users.noreply.github.com> --- .../workflows/build-and-publish-docker.yml | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 .github/workflows/build-and-publish-docker.yml diff --git a/.github/workflows/build-and-publish-docker.yml b/.github/workflows/build-and-publish-docker.yml new file mode 100644 index 0000000..ed3c8f4 --- /dev/null +++ b/.github/workflows/build-and-publish-docker.yml @@ -0,0 +1,96 @@ +name: Docker + +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. + +on: + schedule: + - cron: '28 2 * * *' + push: + branches: [ "main" ] + # Publish semver tags as releases. + tags: [ 'v*.*.*' ] + pull_request: + branches: [ "main" ] + +env: + # Use docker.io for Docker Hub if empty + REGISTRY: ghcr.io + # github.repository as / + IMAGE_NAME: ${{ github.repository }} + + +jobs: + build: + + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + # This is used to complete the identity challenge + # with sigstore/fulcio when running outside of PRs. + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Install the cosign tool except on PR + # https://github.com/sigstore/cosign-installer + - name: Install cosign + if: github.event_name != 'pull_request' + uses: sigstore/cosign-installer@f3c664df7af409cb4873aa5068053ba9d61a57b6 #v2.6.0 + with: + cosign-release: 'v1.13.1' + + + # Workaround: https://github.com/docker/build-push-action/issues/461 + - name: Setup Docker buildx + uses: docker/setup-buildx-action@79abd3f86f79a9d68a23c75a09a9a85889262adf + + # Login against a Docker registry except on PR + # https://github.com/docker/login-action + - name: Log into registry ${{ env.REGISTRY }} + if: github.event_name != 'pull_request' + uses: docker/login-action@28218f9b04b4f3f62068d7b6ce6ca5b26e35336c + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Extract metadata (tags, labels) for Docker + # https://github.com/docker/metadata-action + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + # Build and push Docker image with Buildx (don't push on PR) + # https://github.com/docker/build-push-action + - name: Build and push Docker image + id: build-and-push + uses: docker/build-push-action@ac9327eae2b366085ac7f6a2d02df8aa8ead720a + with: + context: . + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max + + + # Sign the resulting Docker image digest except on PRs. + # This will only write to the public Rekor transparency log when the Docker + # repository is public to avoid leaking data. If you would like to publish + # transparency data even for private images, pass --force to cosign below. + # https://github.com/sigstore/cosign + - name: Sign the published Docker image + if: ${{ github.event_name != 'pull_request' }} + env: + COSIGN_EXPERIMENTAL: "true" + # This step uses the identity token to provision an ephemeral certificate + # against the sigstore community Fulcio instance. + run: echo "${{ steps.meta.outputs.tags }}" | xargs -I {} cosign sign {}@${{ steps.build-and-push.outputs.digest }} From 01570e286cd824d3f73df86e0ae5722d0c51431a Mon Sep 17 00:00:00 2001 From: Shubham Verlekar Date: Thu, 16 Feb 2023 04:02:00 +0530 Subject: [PATCH 3/5] Update docker image and README for OpenAI API - Update docker-compose.yml to use image from ghcr.io repository and add environment variable for OpenAI API Token - Update README.md instructions to use the ghcr.io repository and remove 3 empty lines at the end of the file [docker-compose.yml] - Change the image from `gpt3discord:latest` to `docker pull ghcr.io/Kav-K/GPT3Discord:main` - Add environment variable for OpenAI API Token [README.md] - Change the docker run command to use the ghcr.io repository - Remove 3 empty lines at the end of the file --- README.md | 5 +---- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e326d04..d25475b 100644 --- a/README.md +++ b/README.md @@ -440,14 +440,11 @@ This can also be run via screen/tmux or detached like a daemon. --> ### Docker and Docker Compose : To use docker you can use the following command ``` -docker run -d --name gpt3discord -v /containers/gpt3discord:/data -v /containers/gpt3discord/share:/data/share --env-file /path/to/.env gpt3discord:latest +docker run -d --name gpt3discord -v /containers/gpt3discord:/data -v /containers/gpt3discord/share:/data/share --env-file /path/to/.env ghcr.io/Kav-K/GPT3Discord:main ``` Make sure that the /data and /data/share are created and the `env-file` path is correct. - - - #### Docker Compose To use Docker Compose, you need to have Docker and Docker Compose installed on your system. You can download and install them from the following links: diff --git a/docker-compose.yml b/docker-compose.yml index c45c697..8b4cd96 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.8' services: gpt3discord: - image: gpt3discord:latest + image: docker pull ghcr.io/Kav-K/GPT3Discord:main container_name: gpt3discord environment: OPENAI_TOKEN: "" From 1c9e588d18d8800edb90324a90952a6ec308fb8c Mon Sep 17 00:00:00 2001 From: Shubham Verlekar Date: Thu, 16 Feb 2023 04:17:49 +0530 Subject: [PATCH 4/5] Update Docker image to `ghcr.io/kav-k/gpt3discord:main` - Update Docker image to `ghcr.io/kav-k/gpt3discord:main` - Update `docker-compose.yml` image name to `kav-k/gpt3discord:main` [README.md] - Change the Docker image to `ghcr.io/kav-k/gpt3discord:main` [docker-compose.yml] - Change the image name from `Kav-K/GPT3Discord:main` to `kav-k/gpt3discord:main` --- README.md | 2 +- docker-compose.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d25475b..8debb0f 100644 --- a/README.md +++ b/README.md @@ -440,7 +440,7 @@ This can also be run via screen/tmux or detached like a daemon. --> ### Docker and Docker Compose : To use docker you can use the following command ``` -docker run -d --name gpt3discord -v /containers/gpt3discord:/data -v /containers/gpt3discord/share:/data/share --env-file /path/to/.env ghcr.io/Kav-K/GPT3Discord:main +docker run -d --name gpt3discord -v /containers/gpt3discord:/data -v /containers/gpt3discord/share:/data/share --env-file /path/to/.env ghcr.io/kav-k/gpt3discord:main ``` Make sure that the /data and /data/share are created and the `env-file` path is correct. diff --git a/docker-compose.yml b/docker-compose.yml index 8b4cd96..b2abb10 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.8' services: gpt3discord: - image: docker pull ghcr.io/Kav-K/GPT3Discord:main + image: docker pull ghcr.io/kav-k/gpt3discord:main container_name: gpt3discord environment: OPENAI_TOKEN: "" From a2a9ac17564e9e97bf91161b124956eb81776874 Mon Sep 17 00:00:00 2001 From: Shubham Verlekar Date: Thu, 16 Feb 2023 04:32:39 +0530 Subject: [PATCH 5/5] Update Docker Compose for GPT-3 Discord Bot - Update `docker-compose.yml` to use the latest version of `ghcr.io/kav-k/gpt3discord:main` image - Add `OPENAI_TOKEN` environment variable to `docker-compose.yml` [docker-compose.yml] - Change the `image` line in `docker-compose.yml` from `docker pull ghcr.io/kav-k/gpt3discord:main` to `ghcr.io/kav-k/gpt3discord:main` - Add an `OPENAI_TOKEN` environment variable to `docker-compose.yml` --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index b2abb10..4529bac 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,7 +1,7 @@ version: '3.8' services: gpt3discord: - image: docker pull ghcr.io/kav-k/gpt3discord:main + image: ghcr.io/kav-k/gpt3discord:main container_name: gpt3discord environment: OPENAI_TOKEN: ""