To get started with the labeler, you'll need to define the following environment variables in a .env file:
COMPOSE_PROJECT_NAME=labeling
DATABASE_NAME=labeling
DATABASE_USER=labeling_admin
DATABASE_PASS=Ex4mpleP4$$w0rdAfter that define the following files:
label.txt- A file containing the labels to be used in the labeling process, one label per line.reviewer.txt- A file containing the reviewers to be used in the labeling process, one reviewer name per line.instance.[ct]sv- A file containing the instances to be labeled, one instance per line. The file must adhere to the following format:instance_category<SEPARATOR>instance_json. If you are using a.tsvfile, the separator is\t, while for.csvfiles the separator is,. Only one of these files should be defined, and if both are defined, the.tsvfile will take precedence.
Finally, create a docker-compose.yml file with the following configurations:
version: "3.9"
name: "labeling"
services:
labeling-database:
container_name: labeling-database
hostname: labeling-database
image: seart/labeling-database:latest
volumes:
- data:/var/lib/postgresql/data
- ./label.txt:/docker-entrypoint-initdb.d/label.txt
- ./reviewer.txt:/docker-entrypoint-initdb.d/reviewer.txt
- ./instance.tsv:/docker-entrypoint-initdb.d/instance.tsv
networks: [ default ]
environment:
POSTGRES_DB: ${DATABASE_NAME}
POSTGRES_USER: ${DATABASE_USER}
POSTGRES_PASSWORD: ${DATABASE_PASS}
restart: always
labels:
- "com.centurylinklabs.watchtower.scope=labeler"
labeling-server:
container_name: labeling-server
hostname: labeling-server
image: seart/labeling-server:latest
volumes:
- ./logs:/labeling/logs
environment:
DATABASE_HOST: labeling-database
DATABASE_PORT: 5432
DATABASE_NAME: ${DATABASE_NAME}
DATABASE_USER: ${DATABASE_USER}
DATABASE_PASS: ${DATABASE_PASS}
depends_on:
labeling-database:
condition: service_healthy
deploy:
restart_policy:
condition: on-failure
max_attempts: 3
labels:
- "com.centurylinklabs.watchtower.scope=labeler"
ports:
- "7755:3000"
# Optional service for backing up the
# database at the start of each day
labeling-backup:
container_name: labeling-backup
hostname: labeling-backup
image: tiredofit/db-backup:latest
volumes:
- /tmp/labeling/backup:/backup
networks: [ default ]
links: [ labeling-database ]
environment:
TZ: UTC
DB01_TYPE: pgsql
DB01_HOST: labeling-database
DB01_NAME: ${DATABASE_NAME}
DB01_USER: ${DATABASE_USER}
DB01_PASS: ${DATABASE_PASS}
DEFAULT_BACKUP_BEGIN: '0000'
DEFAULT_CLEANUP_TIME: '10080'
DEFAULT_EXTRA_BACKUP_OPTS: --data-only --column-inserts
DEFAULT_COMPRESSION: GZ
DEFAULT_CHECKSUM: SHA1
DEFAULT_CREATE_LATEST_SYMLINK: FALSE
CONTAINER_ENABLE_MONITORING: FALSE
CONTAINER_ENABLE_MESSAGING: FALSE
depends_on:
labeling-database:
condition: service_healthy
restart: always
labels:
- "com.centurylinklabs.watchtower.scope=labeler"
# Optional service for updating the
# service images at the start of each hour
labeling-watchtower:
container_name: labeling-watchtower
hostname: labeling-watchtower
image: containrrr/watchtower:latest
volumes:
- /var/run/docker.sock:/var/run/docker.sock
networks: [ default ]
environment:
WATCHTOWER_SCOPE: 'labeler'
WATCHTOWER_TIMEOUT: '60s'
WATCHTOWER_SCHEDULE: '0 0 */1 * * *'
WATCHTOWER_INCLUDE_STOPPED: true
depends_on:
labeling-database:
condition: service_healthy
labeling-server:
condition: service_healthy
labeling-backup:
condition: service_started
restart: always
labels:
- "com.centurylinklabs.watchtower.scope=labeler"
volumes:
data:
name: labeling-data
networks:
default:
name: labeling-network