# Docker 编译 编译目录内含 `omc_web` 和 `omc_api` 两个项目代码 将后端项目代码中的 `docker/Dockerfile` 文件移动到最外层目录下,`docker/omc`是内部文件挂载的文件资源。 编译目录结构 ```text probject ├── omc_web 目录-前端项目代码 ├── omc_api 目录-后端项目代码 └── Dockerfile 文件-Docker编译需要 ``` 内部文件资源 | 路径 | 说明 | | --------------------------- | -------------------------- | | /usr/local/etc/omc/static | 网管静态资源文件路径 | | /usr/local/etc/omc/upload | 网管上传文件资源路径 | | /usr/local/etc/omc/omc.yaml | 网管配置文件 | | /usr/local/etc/omc | 网管与网元之间相关文件 | | /etc/nginx/cert | 网管前端 nginx 代理证书 | | /etc/nginx/nginx.conf | 网管前端 nginx 代理配置 | | /var/log | 网管相关日志输出 | | /tmp/omc | 存放从网元拉取到本地的文件 | ## 编译 - `VERSION` 变量是后端程序打包版本号注入 ```sh docker build --build-arg VERSION="2.241101" -t omc:2.241101 . ``` ## 部署 - `APPENV` 程序启动环境变量 local、prod (-e APPENV="local") ```sh docker run -d \ --privileged=true \ --restart=always \ -p 8822:22 \ -p 8880:80 \ -p 8830:33030 \ -p 8833:33033 \ -p 8840:33040 \ -p 8860:33060 \ -v /home/manager/probject/omc_api/docker/omc:/usr/local/etc/omc \ -v /home/manager/probject/omc_api/docker/omc/logs:/var/log \ -v /home/manager/probject/omc_api/docker/omc/nginx/cert:/etc/nginx/cert \ -v /home/manager/probject/omc_api/docker/omc/nginx/nginx.conf:/etc/nginx/nginx.conf \ -e TZ="Asia/Shanghai" \ -e APPENV="local" \ -m 512M \ --name omc2.241101 \ omc:2.241101 ``` ## 镜像导出导入 ```sh docker save omc:2.241101 -o omc_r2.241101.tar docker load -i omc_r2.241101.tar ``` ## 调试 ```sh docker run -it omc:xxx sh docker exec -it omc:xxx sh /usr/sbin/sshd -D && nginx -c /etc/nginx/nginx.conf && /usr/local/bin/omc --env prod -c /usr/local/etc/omc/omc.yaml ```