diff --git a/docker-compose.gpu.yml b/docker-compose-helpers.yml similarity index 66% rename from docker-compose.gpu.yml rename to docker-compose-helpers.yml index 042a0ae..a217eb3 100644 --- a/docker-compose.gpu.yml +++ b/docker-compose-helpers.yml @@ -1,26 +1,11 @@ -volumes: - mongodb_data: - external: false - networks: cocoannotator: external: false services: - ia: - deploy: - resources: - reservations: - devices: - - driver: nvidia - device_ids: ['0'] - capabilities: [gpu] - container_name: annotator_ia - build: - context: . - dockerfile: ./backend/ia/Dockerfile - ports: - - 6000:6000 + service-common: + networks: + - cocoannotator volumes: - "./backend/config:/workspace/config" - "./backend/ia:/workspace/ia" @@ -28,13 +13,20 @@ services: - "./backend/database:/workspace/database" - "./datasets:/datasets" - "./models:/models" + + ia-cpu: + extends: service-common + container_name: annotator_ia + build: + context: . + dockerfile: ./backend/ia/Dockerfile + ports: + - 6000:6000 environment: - FILE_WATCHER=true - FLASK_APP=ia - - FLASK_ENV=development - - DEBUG=true - - DEVICE=cuda - # Install IA applications or not + - DEVICE=cpu + # Install IA aplications or not - MASKRCNN="0" - DEXTR="1" - SAM="1" @@ -72,49 +64,15 @@ services: keyboard,cell phone,microwave,oven,toaster, sink,refrigerator,book,clock,vase,scissors, teddy bear,hair drier,toothbrush - networks: - - cocoannotator - depends_on: - - database - - workers - webserver: - image: annotator_webclient - container_name: annotator_webclient - restart: "no" - ports: - - "5000:5000" + ia-gpu: + extends: ia-cpu + deploy: + resources: + reservations: + devices: + - driver: nvidia + device_ids: ["0"] + capabilities: ["gpu"] environment: - - SECRET_KEY=RandomSecretKeyHere - - FILE_WATCHER=true - - TARGET_PROXY=http://annotator_ia:6000 - - NAME=Test Annotator - volumes: - - "./datasets:/datasets" - - "./models:/models" - depends_on: - - database - - workers - networks: - - cocoannotator - - workers: - container_name: annotator_workers - image: annotator_workers - volumes: - - "./datasets:/datasets" - depends_on: - - messageq - - database - networks: - - cocoannotator - - database: - extends: - file: ./mongo_and_rabbitmq-compose.yml - service: database - messageq: - extends: - file: ./mongo_and_rabbitmq-compose.yml - service: messageq - + - DEVICE=cuda \ No newline at end of file diff --git a/docker-compose.build.yml b/docker-compose.build.yml deleted file mode 100644 index dda9dff..0000000 --- a/docker-compose.build.yml +++ /dev/null @@ -1,52 +0,0 @@ -volumes: - mongodb_data: - external: false -networks: - cocoannotator: - external: false - -services: - webserver: - build: - context: . - dockerfile: ./Dockerfile - container_name: annotator_webclient - image: annotator_webclient - restart: always - ports: - - "5000:5000" - environment: - - SECRET_KEY=RandomSecretKeyHere - - FILE_WATCHER=true - - NAME=Test Annotator - volumes: - - "./datasets:/datasets" - - "./models:/models" - depends_on: - - database - - workers - networks: - - cocoannotator - workers: - container_name: annotator_workers - image: annotator_workers - build: - context: . - dockerfile: ./backend/workers/Dockerfile - volumes: - - "./datasets:/datasets" - depends_on: - - messageq - - database - networks: - - cocoannotator - - database: - extends: - file: ./mongo_and_rabbitmq-compose.yml - service: database - messageq: - extends: - file: ./mongo_and_rabbitmq-compose.yml - service: messageq - diff --git a/docker-compose.dev.yml b/docker-compose.dev.yml index 479f4b8..05b2eee 100644 --- a/docker-compose.dev.yml +++ b/docker-compose.dev.yml @@ -1,161 +1,19 @@ -volumes: - mongodb_data: - external: false -networks: - cocoannotator: - external: false +# To be used with docker-compose -f docker-compose.yml -f docker-compose.dev.yml [build|up|down|etc] services: - frontend: - container_name: annotator_client - build: - context: . - dockerfile: ./client/Dockerfile - ports: - - "8080:8080" - volumes: - - "./client:/workspace/client" - networks: - - cocoannotator - depends_on: - - webserver ia: - deploy: - resources: - reservations: - devices: - - driver: nvidia - device_ids: ['0'] - capabilities: [gpu] - container_name: annotator_ia - build: - context: . - dockerfile: ./backend/ia/Dockerfile - ports: - - 6000:6000 - volumes: - - "./backend/config:/workspace/config" - - "./backend/ia:/workspace/ia" - - "./backend/workers:/workspace/workers" - - "./backend/database:/workspace/database" - - "./datasets:/datasets" - - "./models:/models" environment: - - FILE_WATCHER=true - - FLASK_APP=ia - FLASK_ENV=development - DEBUG=true - - DEVICE=cuda - # Install IA applications or not - - MASKRCNN="0" - - DEXTR="1" - - SAM="1" - - SAM2="1" - - ZIM="1" - - DETECTRON2="0" - - MASKFORMER="0" - # - SAM_MODEL_FILE=/models/sam_vit_b_01ec64.pth - - SAM_MODEL_FILE=/models/sam_hq_vit_b.pth - - SAM_MODEL_TYPE=vit_b - - SAM2_MODEL_FILE=/models/sam2.1_hiera_base_plus.pt - - SAM2_MODEL_CONFIG=configs/sam2.1/sam2.1_hiera_b+.yaml - - ZIM_MODEL_FILE=/models/zim/ - - ZIM_MODEL_TYPE=vit_b - # - DETECTRON2_FILE=/models/quick_schedules/mask_rcnn_R_50_FPN_inference_acc_test.yaml - # - DETECTRON2_WEIGHTS=detectron2://COCO-InstanceSegmentation/mask_rcnn_R_50_FPN_3x/137849600/model_final_f10217.pkl - # - MASK_FORMER_FILE=/models/ade20k-150/maskformer_R50_bs16_160k.yaml - # - MASK_FORMER_WEIGHTS=https://dl.fbaipublicfiles.com/maskformer/semantic-ade20k/maskformer_R50_bs16_160k/model_final_d8dbeb.pkl - # - MASK_RCNN_FILE=/models/mask_rcnn_coco.h5 - # # Default coco classes (order matters) - - | - MASK_RCNN_CLASSES= - BG,person,bicycle,car,motorcycle,airplane, - bus,train,truck,boat,traffic light, - fire hydrant,stop sign,parking meter,bench,bird, - cat,dog,horse,sheep,cow,elephant,bear, - zebra,giraffe,backpack,umbrella,handbag,tie, - suitcase,frisbee,skis,snowboard,sports ball, - kite,baseball bat,baseball glove,skateboard, - surfboard,tennis racket,bottle,wine glass,cup, - fork,knife,spoon,bowl,banana',apple, - sandwich,orange,broccoli,carrot,hot dog,pizza, - donut,cake,chair,couch,potted plant,bed, - dining table,toilet,tv,laptop,mouse,remote, - keyboard,cell phone,microwave,oven,toaster, - sink,refrigerator,book,clock,vase,scissors, - teddy bear,hair drier,toothbrush - networks: - - cocoannotator - depends_on: - - database - - workers + # "" means run when no profile is specified + profiles: + - "" webserver: - container_name: annotator_webserver build: context: . dockerfile: ./backend/webserver/Dockerfile - ports: - - 5000:5000 - volumes: - - "./backend/config:/workspace/config" - - "./backend/webserver:/workspace/webserver" - - "./backend/workers:/workspace/workers" - - "./backend/database:/workspace/database" - - "./datasets:/datasets" - - "./models:/models" + image: "annotator_webclient:dev" environment: - - FILE_WATCHER=true - FLASK_APP=webserver - FLASK_ENV=development - - DEBUG=true - - DEVICE=cuda - - | - MASK_RCNN_CLASSES= - BG,person,bicycle,car,motorcycle,airplane, - bus,train,truck,boat,traffic light, - fire hydrant,stop sign,parking meter,bench,bird, - cat,dog,horse,sheep,cow,elephant,bear, - zebra,giraffe,backpack,umbrella,handbag,tie, - suitcase,frisbee,skis,snowboard,sports ball, - kite,baseball bat,baseball glove,skateboard, - surfboard,tennis racket,bottle,wine glass,cup, - fork,knife,spoon,bowl,banana',apple, - sandwich,orange,broccoli,carrot,hot dog,pizza, - donut,cake,chair,couch,potted plant,bed, - dining table,toilet,tv,laptop,mouse,remote, - keyboard,cell phone,microwave,oven,toaster, - sink,refrigerator,book,clock,vase,scissors, - teddy bear,hair drier,toothbrush - networks: - - cocoannotator - depends_on: - - database - - workers - workers: - container_name: annotator_workers - build: - context: . - dockerfile: ./backend/workers/Dockerfile - volumes: - - "./backend/config:/workspace/config" - - "./backend/webserver:/workspace/webserver" - - "./backend/workers:/workspace/workers" - - "./backend/database:/workspace/database" - - "./datasets:/datasets" - depends_on: - - messageq - - database - ports: - - 5555:5555 - networks: - - cocoannotator - - database: - extends: - file: ./mongo_and_rabbitmq-compose.yml - service: database - messageq: - extends: - file: ./mongo_and_rabbitmq-compose.yml - service: messageq - + - DEBUG=true \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml index 1e104ff..3551a02 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -7,40 +7,87 @@ networks: external: false services: + messageq: + extends: + file: docker-compose-helpers.yml + service: service-common + image: rabbitmq:3 + container_name: annotator_message_q + environment: + - RABBITMQ_DEFAULT_USER=user + - RABBITMQ_DEFAULT_PASS=password + database: + extends: + file: docker-compose-helpers.yml + service: service-common + image: mongo:4.0 + container_name: annotator_mongodb + restart: always + environment: + - MONGO_DATA_DIR=/data/db + - MONGO_LOG_DIR=/dev/null + volumes: + - "mongodb_data:/data/db" + command: "mongod --smallfiles --logpath=/dev/null" + ports: + - 27017:27017 + frontend: + extends: + file: docker-compose-helpers.yml + service: service-common + container_name: annotator_client + build: + context: . + dockerfile: ./client/Dockerfile + ports: + - "8080:8080" + volumes: + - "./client:/workspace/client" + depends_on: + - webserver webserver: + extends: + file: docker-compose-helpers.yml + service: service-common + build: + context: . + dockerfile: ./Dockerfile image: annotator_webclient container_name: annotator_webclient restart: always ports: - - "5000:5000" + - "5001:5000" environment: - SECRET_KEY=RandomSecretKeyHere - FILE_WATCHER=true - volumes: - - "./datasets:/datasets" - - "./models:/models" + - NAME=Test Annotator depends_on: - database - workers - networks: - - cocoannotator workers: + extends: + file: docker-compose-helpers.yml + service: service-common container_name: annotator_workers image: annotator_workers - volumes: - - "./datasets:/datasets" + build: + context: . + dockerfile: ./backend/workers/Dockerfile depends_on: - messageq - database - networks: - - cocoannotator - database: + ia: + profiles: + - ia-gpu extends: - file: ./mongo_and_rabbitmq-compose.yml - service: database - messageq: + file: ./docker-compose-helpers.yml + service: ia-gpu + + ia-cpu: + profiles: + - ia-cpu extends: - file: ./mongo_and_rabbitmq-compose.yml - service: messageq + file: ./docker-compose-helpers.yml + service: ia-cpu diff --git a/mongo_and_rabbitmq-compose.yml b/mongo_and_rabbitmq-compose.yml deleted file mode 100644 index 61d9884..0000000 --- a/mongo_and_rabbitmq-compose.yml +++ /dev/null @@ -1,24 +0,0 @@ -services: - messageq: - image: rabbitmq:3 - container_name: annotator_message_q - environment: - - RABBITMQ_DEFAULT_USER=user - - RABBITMQ_DEFAULT_PASS=password - networks: - - cocoannotator - database: - image: mongo:4.0 - container_name: annotator_mongodb - restart: always - environment: - - MONGO_DATA_DIR=/data/db - - MONGO_LOG_DIR=/dev/null - volumes: - - "mongodb_data:/data/db" - command: "mongod --smallfiles --logpath=/dev/null" - networks: - - cocoannotator - ports: - - 27017:27017 -