Deploying Docker applications on ARM-based Ubuntu servers can present challenges. One common issue is the „no matching manifest for linux/arm64/v8 in the manifest list entries” error. This guide provides a solution to this problem using the deployment of the FlowiseAI app as an example.
Step 1: Install Docker with ARM Support
Docker has made strides towards ARM compatibility. Install Docker on your ARM-based Ubuntu server using the following command:
First, you need to install Docker. Foolow this official guide to install Docker on Ubuntu or other systems.
Step 2: Use Docker Buildx for Multi-Architecture Images
Docker Buildx is a CLI plugin that extends the Docker command with full support for the features provided by the Moby BuildKit builder toolkit. It allows you to build multi-CPU architecture Docker images. Use the following command to install Docker Buildx and build your Docker images:
DOCKER_BUILDKIT=1 docker buildx build --platform linux/arm64 -t flowiseai/flowise .
More information about Docker Buildx can be found in this Docker blog.
Step 3: Deploy the FlowiseAI App
With the Docker image built for the ARM architecture, deploy the FlowiseAI app using the following commands:
git clone https://github.com/FlowiseAI/Flowise.git
cd Flowise && cd docker
sudo nano .env
In the .env file, specify the PORT.
You can also specify FLOWISE_USERNAME
and FLOWISE_PASSWORD
for app-level authorization if needed. After editing, press Ctrl + X to exit, and Y to save the file. Then, run Docker Compose:
sudo docker compose up -d
The app should now be viewable at „Your Public IPv4 DNS”:3000. For example: 176.63.19.226:3000
Step 4: Set Up a Reverse Proxy with SSL
Setting up a reverse proxy with SSL for secure access is essential. For this, use Nginx and Certbot. Here are the commands to install Nginx, configure a server block for your domain, set up a DNS record, and install Certbot for HTTPS (SSL):
sudo apt update
sudo apt install nginx
sudo ufw allow 'Nginx HTTP'
systemctl status nginx
sudo nano /etc/nginx/sites-available/your_domain
In the new file, replace your_domain
with your own domain name and insert the following:
server {
listen 80;
listen [::]:80;
server_name your_domain; #Example: demo.flowiseai.com
location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_cache_bypass $http_upgrade;
}
}
Save and exit, then run:
sudo ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
apt install python3.10-venv
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
sudo /opt/certbot/bin/pip install certbot certbot-nginx
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot
sudo certbot --nginx
To enable Certbot to automatically renew the certificates, add a cron job:
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew -q" | sudo tee -a /etc/crontab > /dev/null
This guide provides a solution to deploying Docker applications, like FlowiseAI, on ARM-based Ubuntu servers. By following these steps, you can overcome common issues and set up a secure and accessible application.