Skip to content

[LAB-620] docker compose stack #661

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 7 commits into from
Sep 27, 2023
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 151 additions & 9 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,19 +1,161 @@
---

version: "3.7"

services:
db:
# sidecar container for setting up required key material
requester_setup:
image: "alpine"
command: >
sh -c '
mkdir -p /home/nonroot/.bacalhau &&
echo CAASqAkwggSkAgEAAoIBAQDQubr6zD3DLEQ07K2wPUQEFfVQLfqTQihc8lQOWuihElXcqZJLajK4od5zc+nCQ/jyUmrmOsYd7aKBmXfyTwOBwCaXEpqqxlP+Pal/Ruh+Ptpfl11KP4sHg3P5sYM/bMRJrEtg1k3mbaToioH5I9GrH7zv5LDHUSezbYFCJ4ZyakUgal+GXPx+TpbdhIx93pZXPHzxgd/m1rbSyiR7sUqXAokzKf2Qv1sOnGrHHcKy8DiSrXo+YUyDRC3lQKwaSfyrBFq1BLqE+E383zYIc5yhcV3kSGivQ2v9o67jEbss3f3ogEfXplsAnBh1S+RfcfneUaRs/UC/+8kyWAC0sU1ZAgMBAAECggEAHZZWZPrSvnnl6UKrlFH69EFQlt8NqBY2toY7WBWW6E47EZ6P+FTDf9yiNed2eW09OsxoDt7B+rgW0xw4HocIzjm4vq2Kcy7N9To0brBUgKDUP7yrIr1DLft6UyjQnAsFABSGUuHOBR4BxFzt860aKZHELJVUYcylPhAFxKTpsAoSy68/Zfkz5wjGtC/ImcHIwGub7NKNmbouQQe6p4beOkYmyVsX6RL/7RPMi7Jvspq0nj0V0j/T13XBUH4b862cqs54HuJQjI9j4QijA9SuCySXQfJw2If8sM7z/3w+IwYhp2JIu4oMTIppCvTBgzAmh+7OMqfOlL7av9iMmqQiAQKBgQDyDtX4TxN1JiFdJg8L3AV8e53GE2eAGY7zpiN7CDrACDXeyrni8fIVz4wY5Pf7+E49dI1S67dsyHVb2dK6Gg4tyECXoRHYPMRktw8LJf9QfCfYsGrpoj/yq2UZ5SqU1Uh70h3b7W3vdZXPZO1BBzT2iwTPGQl/0I0bunSTl72gYQKBgQDcv2etOyDp72NaiZduLpia0RVc92MAZLyoWyq4rscfjU0MvkCPyTa6sKjF2uaUDS5R8yVHB/6+2Mzs4LuWWpNtp6b3rG88CXxfbGDIYn2BOXDqQ9s2/ceISkNMq+NbfcUbbNvG920Ot20VKjkl9s7LcEC0cLiVU14oWd8BOV6v+QKBgQDWOk8g7ktYOSD6Ib7bTiUE4RrnvTCy7OvZs8ZfEw97+UhEH8OYmW0Z5JAnUC4xsLb+KPMS2k+CVX+YhRW9Y2X9GugfyovShyWBxYno4f4uq1NQsgJNOC3EhfB6lJm1E3aNL48BoAbWEYk+/iIElW5IbQ0ahRwlJNxeGA0ouvk2wQKBgQDZYfwdEa9V8BItJHXlYSmSu/eHt27dAlbui+jEOgmJPsLzm59EeWfV7QYm4WxTu68zsHezPWJWWnVjh+PzKnsobwLzv/FCdCzwY2/jpWnmicRyTiRgQQXvZwJjTJn2jSI/4bGEfD//UA6x2wSwKB55JK/zgVWkZ5a/sdD0CaT/MQKBgA7CMHQIjXl8FqATmBgiejGV6BnbUHko4m0Ab7fQUZY1qlgKrqcXgFmMQkb+p8Og1YeVn8Qy8xuvueAfwemA8OxvLuQNzQcA2qhGZID4Tu2Ng+XIkNxMj1gJelppqVeDnZSFr3TbZcSXIVhk1idAnpGDilS8cOO6LUY/hH/IVGGe > /home/nonroot/.bacalhau/private_key.1235 &&
chown -R 65532:65532 /home/nonroot/'
volumes:
- requestervolume:/home/nonroot/

requester:
image: "ghcr.io/bacalhau-project/bacalhau:v1.0.3"
hostname: requester
command: serve --ipfs-connect '/dns4/ipfs/tcp/5001' --node-type requester --private-internal-ipfs=false --peer none --labels "owner=labdao"
volumes:
- requestervolume:/home/nonroot/
environment:
# BACALHAU_ENVIRONMENT: production
LOG_LEVEL: trace
ports:
- 1234:1234
- 1235:1235
depends_on:
ipfs:
condition: service_healthy
requester_setup:
condition: service_completed_successfully

# sidecar container for requester healthcheck
requester_health:
image: "alpine"
command: sh -c 'apk add curl && sleep infinity'
volumes:
- requestervolume:/home/nonroot/
depends_on:
requester:
condition: service_started
healthcheck:
test: curl -f http://requester:1234/readyz
interval: 30s
timeout: 10s
retries: 3
start_period: 10s

compute:
image: "ghcr.io/bacalhau-project/bacalhau:v1.0.3"
hostname: compute
user: root
command: serve --ipfs-connect '/dns4/ipfs/tcp/5001' --node-type compute --labels "owner=labdao" --private-internal-ipfs=false --peer "/dns4/requester/tcp/1235/p2p/Qmd2oBsjjvtUYRmb7zhDEPhSf9YbxA1a7ZLZ6hyCwMqpnh"
environment:
LOG_LEVEL: trace
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /tmp:/tmp
depends_on:
# ipfs:
# condition: service_healthy
requester:
condition: service_started
requester_health:
condition: service_healthy

dbbackend:
image: "postgres:15.4"
environment:
POSTGRES_PASSWORD:
POSTGRES_USER:
POSTGRES_DB:
POSTGRES_HOST:
POSTGRES_PASSWORD: labdao
POSTGRES_USER: labdao
POSTGRES_DB: backend
ports:
- 5432:5432
volumes:
- type: volume
source: dbdata
target: /var/lib/postgresql/data
- dbdata-backend:/var/lib/postgresql/data
healthcheck:
test: pg_isready -U postgres || exit 1
interval: 30s
timeout: 10s
retries: 3
start_period: 10s

backend:
build: .
ports:
- 8080:8080
environment:
POSTGRES_PASSWORD: labdao
POSTGRES_USER: labdao
POSTGRES_DB: backend
POSTGRES_HOST: dbbackend
BACALHAU_API_HOST: requester
IPFS_API_HOST: ipfs
FRONTEND_URL: http://localhost:3000
depends_on:
dbbackend:
condition: service_healthy
healthcheck:
test: wget --no-verbose --tries=1 --spider http://localhost:8080/healthcheck || exit 1
interval: 30s
timeout: 10s
retries: 3
start_period: 10s

frontend:
build:
context: ./frontend
dockerfile: ./Dockerfile
args:
NEXT_PUBLIC_BACKEND_URL: http://localhost:8080
environment:
NODE_ENV: 'production'
ports:
- 3000:3000

dbreceptor:
image: "postgres:15.4"
environment:
POSTGRES_PASSWORD: labdao
POSTGRES_USER: labdao
POSTGRES_DB: receptor
volumes:
- dbdata-receptor:/var/lib/postgresql/data
healthcheck:
test: pg_isready -U postgres || exit 1
interval: 30s
timeout: 10s
retries: 3
start_period: 10s

receptor:
build:
context: ./receptor
dockerfile: ./Dockerfile
environment:
PGHOST: dbreceptor
PGUSER: labdao
PGPASSWORD: labdao
PGDATABASE: receptor
PGSSLMODE: disable
depends_on:
dbreceptor:
condition: service_healthy

ipfs:
image: "ipfs/kubo"
hostname: ipfs
volumes:
- ipfs:/data/ipfs
ports:
- 4001:4001
- 5001:5001

volumes:
dbdata:
requestervolume:
ipfs:
dbdata-backend:
dbdata-receptor: