# 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="prod" \
-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

service ssh start && service nginx start && /usr/local/bin/omc --env prod -c /usr/local/etc/omc/omc.yaml

```
