version: '2.3'
services:
instance1:
#指定镜像,每个comose文件都必须有
image: adc_deploy:t2
volumes:
# CODE_HOME, ADC src file
- "./:/src"
# CONFIG_PATH, config file
- "./configs/24B01_1350:/configs/"
# MODEL_PATH, model files
- "./adc_models/24B01_1350:/models/"
# where to find JPG and request-JSON
# NAS, jpg
- "./adc_testingdata/24B01_1350:/acftp/AC/"
# JSON_PATH, on test server
- "./tmp/json:/home/adcadmin/t2ArrayAdc/json/"
# JSON_PATH, on production server
- "./tmp/json:/adc_json/"
# LOG_PATH, log files
- "./logs:/logs/"
# DEBUG_PATH, debug
- "./debug_output/:/debug/"
# TEST_PATH, additional testing data
- "/home/elogi/proj/t2_1350_common/adc_testingdata/:/home/elogi/proj/t2_1350_common/adc_testingdata/"
#暴露端口信息;使用宿主端口:容器端口 (HOST:CONTAINER) 格式,或者仅仅指定容器的端口(宿主将会随机选择端口)都可以
ports:
# PORT
- "1350:8080"
#指定容器对内存资源限制
mem_limit: 2048m
#user: "1000:1000"
#打开标准输入,可以接受外部输入;什么意思
stdin_open: true
#模拟一个伪终端
tty: true
runtime: nvidia
#指定容器的内核(capacity)能力分配
cap_add:
- SYS_PTRACE
#指定容器模板标签(label)机制的默认属性(用户、角色、类型、级别等)。例如配置标签的用户名和角色名
security_opt:
- seccomp:unconfined
#允许容器中运行一些特权命令
privileged: true
#容器启动后的默认命令
command: bash run.sh
#设置环境变量;只给定名称的变量会自动获取运行 Compose 主机上对应变量的值,可以用来防止泄露不必要的数据,什么意思?
#在容器中如果出现environment中的变量就设定为相应的值
environment:
- ADC_SITE=24B01_1350
- ADC_package=None
- per_process_gpu_memory_fraction=0.6
- CUDA_VISIBLE_DEVICES=0
- LOG_TAG=24B01_1350
#指定容器名称,默认:项目名称_服务名称_序号 这样的格式,这里没有指定容器名称
#注意: 指定容器名称后,该服务将无法进行扩展(scale),因为 Docker 不允许多个容器具有相同的名称
#container_name: your_continer_name
#指定设备映射关系;什么意思
# devices:
# - "/dev/ttyUSB1:/dev/ttyUSB0"
#解决容器的依赖、启动先后的问题;下面的意思就是在启动instance1之前会先启动instance2,instance3
# depends_on:
# - instance2
# - instance3
#指定工作目录
# work_dir: /code
docker-compose -f 24b01-docker-compose.yml up #-f指定yml文件,执行docker-compose服务