iceshrimp/docker-compose.yml.example
2023-08-16 13:58:59 +02:00

122 lines
3 KiB
Plaintext

version: "3"
services:
web:
image: iceshrimp.dev/iceshrimp/iceshrimp:dev
### If you want to build the image locally
# build: .
### If you want to build the image locally AND use Docker 20.10
# build:
# context: .
# args:
# DOCKER_BUILDKIT: 1
container_name: iceshrimp_web
restart: unless-stopped
depends_on:
- db
- redis
### Uncomment one of the following to use a search engine
# - meilisearch
# - sonic
### Uncomment one of the following to use a cache server
# - dragonflydb
# - keydb
# - redis_cache
ports:
- "3000:3000"
networks:
- ishnet
# - web
environment:
NODE_ENV: production
volumes:
- ./files:/iceshrimp/files
- ./.config:/iceshrimp/.config:ro
redis:
restart: unless-stopped
image: docker.io/redis:7.0-alpine
container_name: iceshrimp_redis
networks:
- ishnet
volumes:
- ./redis:/data
db:
restart: unless-stopped
image: docker.io/postgres:12.2-alpine
container_name: iceshrimp_db
networks:
- ishnet
env_file:
- .config/docker.env
volumes:
- ./db:/var/lib/postgresql/data
### Search Engines
### Only one of the below should be used.
### Meilisearch is better overall, but resource-intensive. Sonic is a very light full text search engine.
# meilisearch:
# container_name: iceshrimp_meilisearch
# image: docker.io/getmeili/meilisearch:v1.1.1
# environment:
# - MEILI_ENV=${MEILI_ENV:-development}
# ports:
# - "7700:7700"
# networks:
# - ishnet
# volumes:
# - ./meili_data:/meili_data
# restart: unless-stopped
# sonic:
# container_name: iceshrimp_sonic
# restart: unless-stopped
# image: docker.io/valeriansaliou/sonic:v1.4.0
# networks:
# - ishnet
# volumes:
# - ./sonic:/var/lib/sonic/store
# - ./sonic/config.cfg:/etc/sonic.cfg
### Cache Servers
### Only one of the below should be used.
### DragonflyDB is the fastest overall, however it is NOT open source, but source-available (BSL). KeyDB is still faster than pure Redis, and it's BSD-licensed.
# dragonflydb:
# container_name: iceshrimp_dragonflydb
# restart: unless-stopped
# image: 'docker.dragonflydb.io/dragonflydb/dragonfly:v1.8.0'
# ulimits:
# memlock: -1
# networks:
# - ishnet
# volumes:
# - ./dragonflydb:/data
# keydb:
# container_name: iceshrimp_keydb
# restart: unless-stopped
### Choose an image depending on your architecture, keydb doesn't build alpine for arm, and the way they do tags is very weird in general
## image: 'docker.io/eqalpha/keydb:alpine_x86_64_v6.3.3'
## image: 'docker.io/eqalpha/keydb:arm64_v6.3.3'
# networks:
# - ishnet
# volumes:
# - ./keydb:/data
# redis_cache:
# restart: unless-stopped
# image: docker.io/redis:7.0-alpine
# container_name: iceshrimp_redis_cache
# networks:
# - ishnet
# volumes:
# - ./redis_cache:/data
networks:
ishnet:
# web:
# external:
# name: web