Spaces:
Runtime error
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:MY[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 |