Integrating with Docker - CrewAI
Introduction
Docker is a platform that allows developers to create, deploy, and run applications in containers. Containers are lightweight and contain everything needed to run a piece of software, including the code, runtime, system tools, libraries, and settings. This tutorial will guide you through the process of integrating CrewAI with Docker, from setting up Docker to deploying a CrewAI application in a Docker container.
Prerequisites
Before you begin, ensure you have the following installed on your system:
- Docker
- Docker Compose (optional, for multi-container applications)
- Basic knowledge of Docker and command-line interface
Step 1: Installing Docker
First, you need to install Docker on your machine. Follow the instructions on the official Docker website to download and install Docker for your operating system.
Example
On Ubuntu, you can install Docker using the following commands:
sudo apt-get updatesudo apt-get install -y apt-transport-https ca-certificates curl software-properties-commoncurl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"sudo apt-get updatesudo apt-get install -y docker-ce
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
...
Setting up docker-ce (5:20.10.7~3-0~ubuntu-focal) ...
...
Step 2: Setting Up Your CrewAI Application
Create a simple CrewAI application. For this tutorial, we'll create a basic Python application. Create a new directory for your project and navigate into it:
mkdir crewai-appcd crewai-app
Next, create a Python file named app.py with the following content:
touch app.py
# app.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello():
return "Hello, CrewAI!"
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80)
Step 3: Writing a Dockerfile
A Dockerfile is a text document that contains all the commands to assemble an image. Create a Dockerfile in the root of your project directory:
touch Dockerfile
Add the following content to the Dockerfile:
# Dockerfile
FROM python:3.8-slim-buster
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
Create a requirements.txt file to list the dependencies:
touch requirements.txt
Add Flask to the requirements.txt:
# requirements.txt
Flask==2.0.1
Step 4: Building the Docker Image
Now that you have a Dockerfile, you can build your Docker image. Run the following command in your project directory:
docker build -t crewai-app .
Docker will read your Dockerfile and build an image according to the instructions. You should see output similar to this:
Sending build context to Docker daemon 7.168kB
Step 1/6 : FROM python:3.8-slim-buster
---> f7a292bbb70c
Step 2/6 : WORKDIR /app
---> Using cache
---> 94c673d0c7a6
Step 3/6 : COPY requirements.txt requirements.txt
---> Using cache
---> e87d20b1f3a3
Step 4/6 : RUN pip install -r requirements.txt
---> Using cache
---> 7d9e6a2b6d38
Step 5/6 : COPY . .
---> Using cache
---> 8a7e6b7e3d3e
Step 6/6 : CMD ["python", "app.py"]
---> Using cache
---> 0a1e6b8b7e4d
Successfully built 0a1e6b8b7e4d
Successfully tagged crewai-app:latest
Step 5: Running the Docker Container
Once the image is built, you can run it as a container. Use the following command to run the container:
docker run -d -p 80:80 crewai-app
This command runs the container in detached mode and maps port 80 of the host to port 80 of the container. You can now access your CrewAI application by navigating to http://localhost in your web browser.
Conclusion
Congratulations! You've successfully integrated CrewAI with Docker. You learned how to create a Dockerfile, build a Docker image, and run a Docker container. This setup can be further extended for more complex applications and deployment scenarios.
