1 构建docker镜像
- 文件名: Dockerfile
- 指令:
docker build --squash -t <NAME>:<TAG> -f release.dockerfile .
- CMD 在docker run 时运行。
- RUN 是在 docker build。
- ENV是环境变量
# 使用方法:docker build --squash -t <NAME>:<TAG> -f release.dockerfile .
FROM scheduler_base:latest #scheduler_base:latest为基础镜像
# 工作路径是可执行文件存放路径
WORKDIR /exec
# 发布后默认启动guard.sh,项目根目录在启动时默认挂载在/project
CMD ["bash", "start.sh"] #执行bash start.sh 脚本
# 复制本目录所有文件
COPY . .
# 设置环境变量
ENV NODE_VERSION 7.2.0
ENV LANG zh_CN.UTF-8
ENV LANGUAGE zh_CN:zh:en_US:en
ENV LC_ALL zh_CN.UTF-8
# 编译可执行文件,删除无用的文件
RUN bash make.sh && \
cp /detect_client/lib/libdetect_client.so /usr/lib && \
rm -rf assets docker manual src .gitignore make.sh
上面是构建镜像需要用到的指令,其他volume、EXPOSE等一般不适用,而是在容器构建时再使用
2 构建docker容器
- 文件名: docker-compose.yml
- 指令:docker-compose up -d
- 参考手册
- 启动:docker exec -it container_name bash
version: "3"
services: #服务
outstream_tyh: #服务名
image: outstream:no_nginx_20210506 #镜像名
container_name: outstream_test #容器名
init: true
network_mode: host
ipc: host
restart: always
privileged: true
tty: true
shm_size: 5120M
runtime: nvidia
environment:
NVIDIA_VISIBLE_DEVICES: all
volumes:
- ../:/exec
- /etc/localtime:/etc/localtime
- /etc/timezone:/etc/timezone
- /usr/lib/x86_64-linux-gnu/libnvcuvid.so:/usr/lib/x86_64-linux-gnu/libnvcuvid.so
- /usr/lib/x86_64-linux-gnu/libnvidia-encode.so:/usr/lib/x86_64-linux-gnu/libnvidia-encode.so