This guide uses Docker Compose to run Part-DB.
For Docker installation, see Docker.
mkdir -p ~/part-db/{data,attachments,config,mysql-data}
cd ~/part-db
Create a docker-compose.yml file with the following content:
version: '3.8'
services:
part-db:
image: ghcr.io/part-db/part-db:2.6.0 # Use latest stable version
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./data:/data
- ./attachments:/attachments
- ./config:/config
environment:
- PARTDB_DATABASE_URL=sqlite:///data/database.sqlite
- PARTDB_ATTACHMENTS_PATH=/attachments
- PARTDB_BASE_URL=http://localhost:8080
- PARTDB_DEFAULT_LOCALE=en
- PARTDB_SECRET=generate-a-very-secure-random-secret-here
networks:
- part-db-network
networks:
part-db-network:
driver: bridge
docker compose up -d
For production environments, it’s recommended to use an external database for better performance and reliability.
mkdir -p ~/part-db/{data,attachments,config,mysql-data}
cd ~/part-db
Create a docker-compose.yml file with the following content:
version: '3.8'
services:
part-db:
image: ghcr.io/part-db/part-db:2.6.0 # Use latest stable version
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./data:/data
- ./attachments:/attachments
- ./config:/config
environment:
- PARTDB_DATABASE_URL=mysql://partdb_user:your_secure_password@db:3306/partdb
- PARTDB_ATTACHMENTS_PATH=/attachments
- PARTDB_BASE_URL=https://your-domain.com # Update with your domain
- PARTDB_DEFAULT_LOCALE=en
- PARTDB_SECRET=generate-a-very-secure-random-secret-here
depends_on:
- db
networks:
- part-db-network
db:
image: mysql:8.0
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: your_strong_root_password
MYSQL_DATABASE: partdb
MYSQL_USER: partdb_user
MYSQL_PASSWORD: your_secure_password
volumes:
- ./mysql-data:/var/lib/mysql
networks:
- part-db-network
networks:
part-db-network:
driver: bridge
docker compose up -d
For better security and configuration management, use environment files:
Create a .env file in your application directory:
PARTDB_DATABASE_URL=mysql://partdb_user:your_secure_password@db:3306/partdb
PARTDB_ATTACHMENTS_PATH=/attachments
PARTDB_BASE_URL=https://your-domain.com
PARTDB_DEFAULT_LOCALE=en
PARTDB_SECRET=generate-a-very-secure-random-secret-here
MYSQL_ROOT_PASSWORD=your_strong_root_password
MYSQL_DATABASE=partdb
MYSQL_USER=partdb_user
MYSQL_PASSWORD=your_secure_password
Modify your docker-compose.yml to reference the environment file:
version: '3.8'
services:
part-db:
image: ghcr.io/part-db/part-db:2.6.0
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- ./data:/data
- ./attachments:/attachments
- ./config:/config
env_file:
- .env
environment:
- PARTDB_ATTACHMENTS_PATH=/attachments
depends_on:
- db
networks:
- part-db-network
db:
image: mysql:8.0
restart: unless-stopped
env_file:
- .env
volumes:
- ./mysql-data:/var/lib/mysql
networks:
- part-db-network
networks:
part-db-network:
driver: bridge
docker compose up -d
After starting the container:
http://your-server-ip:8080docker compose logs -f
docker compose down
docker-compose.yml filedocker compose pull
docker compose up -d
For backup, ensure you backup:
~/part-db/attachments)~/part-db/config)2.6.0) instead of latest for productionAny questions?
Feel free to contact us. Find all contact information on our contact page.