[Feature] Add support for docker in fullstack app (#1134)
This commit is contained in:
@@ -2,36 +2,61 @@
|
||||
title: '💻 Full stack'
|
||||
---
|
||||
|
||||
Embedchain provides a clean and simple cli utility that lets you create full-stack RAG applications locally with a single command.
|
||||
Get started with full-stack RAG applications using Embedchain's easy-to-use CLI tool. Set up everything with just a few commands, whether you prefer Docker or not.
|
||||
|
||||
## Prerequisite
|
||||
## Prerequisites
|
||||
|
||||
Choose your setup method:
|
||||
|
||||
### Without Docker
|
||||
|
||||
Ensure these are installed:
|
||||
|
||||
Make sure that you have installed the following:
|
||||
- Embedchain python package (`pip install embedchain`)
|
||||
- [Node.js](https://docs.npmjs.com/downloading-and-installing-node-js-and-npm) and [Yarn](https://classic.yarnpkg.com/lang/en/docs/install/)
|
||||
|
||||
## Get started
|
||||
### With Docker
|
||||
|
||||
Install Docker from [Docker's official website](https://docs.docker.com/engine/install/).
|
||||
|
||||
## Quick Start Guide
|
||||
|
||||
### Setting Up
|
||||
|
||||
For the purpose of the demo, you have to set `OPENAI_API_KEY` to start with but you can choose any llm by changing the configuration easily.
|
||||
|
||||
Now run the following commands:
|
||||
### Installation Commands
|
||||
|
||||
```bash
|
||||
<CodeGroup>
|
||||
|
||||
```bash without docker
|
||||
ec create-app my-app
|
||||
cd my-app
|
||||
ec start
|
||||
```
|
||||
|
||||
Once you run this command, Embedchain does the following:
|
||||
```bash with docker
|
||||
ec create-app my-app --docker
|
||||
cd my-app
|
||||
ec start --docker
|
||||
```
|
||||
|
||||
1. Fetch full stack template that uses FastAPI for backend, and Next.JS template for frontend
|
||||
2. Install necessary requirements
|
||||
3. Launch the frontend and backend server for you to interact with
|
||||
</CodeGroup>
|
||||
|
||||
Once you are done, visit `http://localhost:3000` and you will see a chat UI as shown below.
|
||||
### What Happens Next?
|
||||
|
||||
1. Embedchain fetches a full stack template (FastAPI backend, Next.JS frontend).
|
||||
2. Installs required components.
|
||||
3. Launches both frontend and backend servers.
|
||||
|
||||
### See It In Action
|
||||
|
||||
Open http://localhost:3000 to view the chat UI.
|
||||
|
||||

|
||||
|
||||
You can navigate to [Embedchain admin panel] where you can see the chunks created for your documents that you ingested for your RAG application. Below is a screenshot for the same:
|
||||
### Admin Panel
|
||||
|
||||
Check out the Embedchain admin panel to see the document chunks for your RAG application.
|
||||
|
||||

|
||||
|
||||
@@ -49,8 +49,9 @@ def cli():
|
||||
|
||||
@cli.command()
|
||||
@click.argument("app_name")
|
||||
@click.option("--docker", is_flag=True, help="Use docker to create the app.")
|
||||
@click.pass_context
|
||||
def create_app(ctx, app_name):
|
||||
def create_app(ctx, app_name, docker):
|
||||
if Path(app_name).exists():
|
||||
console.print(
|
||||
f"❌ [red]Directory '{app_name}' already exists. Try using a new directory name, or remove it.[/red]"
|
||||
@@ -98,7 +99,10 @@ def create_app(ctx, app_name):
|
||||
anonymous_telemetry.capture(event_name="ec_create_app", properties={"success": False})
|
||||
return
|
||||
|
||||
ctx.invoke(install_reqs)
|
||||
if docker:
|
||||
subprocess.run(["docker-compose", "build"], check=True)
|
||||
else:
|
||||
ctx.invoke(install_reqs)
|
||||
|
||||
|
||||
@cli.command()
|
||||
@@ -126,7 +130,12 @@ def install_reqs():
|
||||
|
||||
|
||||
@cli.command()
|
||||
def start():
|
||||
@click.option("--docker", is_flag=True, help="Run inside docker.")
|
||||
def start(docker):
|
||||
if docker:
|
||||
subprocess.run(["docker-compose", "up"], check=True)
|
||||
return
|
||||
|
||||
# Set up signal handling
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
|
||||
Reference in New Issue
Block a user