Spaces:
Runtime error
title: Chainlit Docker
emoji: 📉
colorFrom: yellow
colorTo: red
sdk: docker
pinned: false
to run locally: chainlit run app.py -w
This application is used to deploy a Chainlit application on HuggingFace space. The code is on the Github repository and it is linked throgh Github actions to HuggingFace so that for each push on Github there's an associated push to HuggingFace: Docker is used in order to perform the deploy. The readme file has to contain as first rows what's present above in order to deploy it correctly. Chainlit authentication is used.
Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
Create a Dockerfile as follows:
FROM python:3.9
WORKDIR /code
COPY ./requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
COPY . .
CMD ["chainlit", "run", "app.py", "--port", "7860"]
Then commit and push:
git add . git commit -m "first commit" git push
** ATTENTION ** The PUSH as it is will FAILS: since October 2023 it is not possible to push using simply username and password: we need to generate a token at HuggingFace and perform the push accordingly: https://huggingface.co/blog/password-git-deprecation
If you don’t have any SSH keys on your machine, you can use ssh-keygen to generate a new SSH key pair (public + private keys): ssh-keygen -t ed25519 -C "[email protected]"
Be sure that the OpenSSH service is STARTED
This generates the couple of keys in the current folder; better to move them into the standard ssh folder (in windows usually c:\users\MYUSERNAME.ssh; in such scenario we will have something like c:\users\MYUSERNAME.ssh\ed25519 and inside the pub and private key with the name chosen)
Once your new key is generated, add it to your SSH agent with ssh-add; let's assume we have a key with name id_ed25519 in the folder C:\users\paisl.ssh\id_ed25519: ssh-add "C:\users\paisl.ssh\id_ed25519\id_ed25519"
To add a SSH key to your account, click on the “Add SSH key” button.
Then, enter a name for this key (for example, “Personal computer”), and copy and paste the content of your public SSH key in the area below. The public key is located in the ~/.ssh/id_XXXX.pub file you found or generated in the previous steps.
Click on “Add key”, and voilà! You have added a SSH key to your huggingface.co account.
ssh -T [email protected] The authenticity of host 'hf.co (...)' can't be established. ED25519 key fingerprint is ... This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])? yes Warning: Permanently added 'hf.co' (ED25519) to the list of known hosts. Hi MY_NAME, welcome to Hugging Face.
ssh -T [email protected] Hi ..., welcome to Hugging Face.
git remote set-url origin https://MY_GITHUB_NAME:[email protected]/spaces/MY_HUGGING_FACE_NAME/Chainlit-docker
git pull origin
Once pulled, the target: https://huggingface.co/spaces/MY_HUGGINGFACE_NAME/Chainlit-docker?logs=container will starting loading the application (we will see the logs) and in the end we will see it running at: https://huggingface.co/spaces/MY_HUGGINGFACE_NAME/Chainlit-docker
Let's now push the code into the Github repo: let's create the Github repo and let's ADD this new repo to the config: git remote add github_repo https://github.com/MY_GITHUB_NAME/Chainlit-docker.git in order to push on this we need to specify the github repo, so performing: git push github_repo
You can keep your app in sync with your GitHub repository with Github Actions
First, you should set up your GitHub repository and Spaces app together. Add your Spaces app as an additional remote to your existing Git repository. git remote add space https://huggingface.co/spaces/MY_HUGGINGFACE_NAME/Chainlit-docker
Then force push to sync everything for the first time: git push --force space main
Create a Github secret with your HF_TOKEN. Github secret tutorial: https://docs.github.com/en/actions/security-guides/using-secrets-in-github-actions#creating-encrypted-secrets-for-an-environment repository -> settings -> secrets and variables -> actions -> new repo secret
create the HF_TOKEN with the value of the token configured in HuggingFace
In your repository, create the .github/workflows/ directory to store your workflow files:
- actions_onpull.yaml
- actions_onpush.yaml
in order to push on Github repo we need to type: git push github_repo
It is possible to act as follows:
- cloning the repo to a new folder
- performing all operations and everything will be alligned to hugging face; such as: -- git add . -- git commit -m "do something" -- git push Please note that the last opearation is no more git push github_repo but just git push, because github is the main reference now
--
in order to handle authentication it is necessary to generate a key: chainlit create-secret then the key generated must be included in the .env file CHAINLIT_AUTH_SECRET=YOUR_KEY_HERE