feat: dockerfile文件编写
This commit is contained in:
@@ -1,73 +1,82 @@
|
|||||||
## 第一阶段 ====> Nodejs打包编译输出前端资源
|
## 第一阶段 ====> Nodejs打包编译输出前端资源
|
||||||
FROM node:18-alpine AS build-nodejs
|
FROM node:20-alpine AS build-node
|
||||||
|
|
||||||
## 工作目录存放程序源码
|
|
||||||
WORKDIR /frontend
|
|
||||||
|
|
||||||
## 复制实际需要的文件到工作目录
|
|
||||||
COPY ./frontend ./
|
|
||||||
|
|
||||||
|
# 前端程序
|
||||||
|
COPY ./omc_web /web
|
||||||
RUN npm config set registry https://registry.npmmirror.com
|
RUN npm config set registry https://registry.npmmirror.com
|
||||||
RUN cd /frontend && npm install && npm run build
|
RUN cd /web && npm install && npm run build
|
||||||
|
RUN touch /web/dist/config.js && echo '/*use nginx*/' | tee /web/dist/config.js
|
||||||
|
|
||||||
## 第二阶段 ====> GO打包编译输出后端程序
|
# 后端程序
|
||||||
FROM golang:alpine AS build-go
|
# COPY ./omc_api /api
|
||||||
|
COPY ./omc_api/restagent/config /api/restagent/config
|
||||||
|
COPY ./omc_api/restagent/etc/restconf.yaml /api/restagent/etc/restconf.yaml
|
||||||
|
COPY ./omc_api/restagent/restagent.go /api/restagent/restagent.go
|
||||||
|
COPY ./omc_api/features /api/features
|
||||||
|
COPY ./omc_api/lib /api/lib
|
||||||
|
COPY ./omc_api/src /api/src
|
||||||
|
COPY ./omc_api/go.sum /api/go.sum
|
||||||
|
COPY ./omc_api/go.mod /api/go.mod
|
||||||
|
|
||||||
|
# Docker文件
|
||||||
|
COPY ./omc_api/docker/omc /docker
|
||||||
|
|
||||||
|
|
||||||
|
## 第二阶段 ====> Go打包编译输出后端程序
|
||||||
|
FROM golang:1.22-alpine AS build-golang
|
||||||
|
|
||||||
|
# 从上个阶段复制过来的文件
|
||||||
|
COPY --from=build-node /web/dist /frontend
|
||||||
|
COPY --from=build-node /api /backend
|
||||||
|
COPY --from=build-node /docker /docker
|
||||||
|
|
||||||
ARG VERSION
|
ARG VERSION
|
||||||
|
ENV CGO_ENABLED 1
|
||||||
ENV CGO_ENABLED 0
|
|
||||||
ENV GOOS linux
|
ENV GOOS linux
|
||||||
ENV GOPROXY https://goproxy.cn,direct
|
ENV GOPROXY https://goproxy.cn,direct
|
||||||
|
|
||||||
WORKDIR /backend
|
## 安装打包必要依赖
|
||||||
|
RUN apk add gcc musl-dev libpcap-dev
|
||||||
## 复制实际需要的文件到工作目录
|
|
||||||
COPY ./backend/docker ./docker
|
|
||||||
COPY ./backend/restagent/config ./restagent/config
|
|
||||||
COPY ./backend/restagent/etc ./restagent/etc
|
|
||||||
COPY ./backend/restagent/restagent.go ./restagent/restagent.go
|
|
||||||
COPY ./backend/features ./features
|
|
||||||
COPY ./backend/lib ./lib
|
|
||||||
COPY ./backend/src ./src
|
|
||||||
COPY ./backend/go.sum ./
|
|
||||||
COPY ./backend/go.mod ./
|
|
||||||
|
|
||||||
RUN cd /backend && go mod download
|
RUN cd /backend && go mod download
|
||||||
RUN cd /backend/restagent && go build -o backend -v -ldflags "-X 'ems.agt/lib/global.Version=${VERSION}' -X 'ems.agt/lib/global.BuildTime=`date`' -X 'ems.agt/lib/global.GoVer=`go version`'"
|
RUN cd /backend/restagent && go build -o omc -v -ldflags "-s -w \
|
||||||
# RUN cd /backend/restagent && go build -ldflags="-s -w" -o backend
|
-X 'be.ems/lib/global.Version=${VERSION}' \
|
||||||
|
-X 'be.ems/lib/global.BuildTime=`date`' \
|
||||||
|
-X 'be.ems/lib/global.GoVer=`go version`'"
|
||||||
|
|
||||||
## 镜像基座 ====> 编译输出前后端可运行的程序
|
## 第三阶段 ====> 构建前后端融合镜像
|
||||||
FROM alpine
|
FROM alpine:3.20
|
||||||
|
|
||||||
## 安装工具
|
## 安装时区工具
|
||||||
RUN apk add --no-cache tzdata nginx openssh \
|
RUN apk add --no-cache tzdata nginx libpcap-dev openssh && \
|
||||||
&& ssh-keygen -A \
|
ssh-keygen -A && \
|
||||||
&& adduser -D omc \
|
adduser -D omcuser && \
|
||||||
&& echo 'omc:password' | chpasswd \
|
echo 'omcuser:password' | chpasswd && \
|
||||||
&& mkdir /home/omc/.ssh \
|
mkdir -p /home/omcuser/.ssh && \
|
||||||
&& chmod 700 /home/omc/.ssh
|
chmod 700 /home/omcuser/.ssh && \
|
||||||
|
touch /home/omcuser/.ssh/authorized_keys && \
|
||||||
|
chmod 600 /home/omcuser/.ssh/authorized_keys && \
|
||||||
|
chown -R omcuser:omcuser /home/omcuser/.ssh
|
||||||
|
|
||||||
# 设置时区和语言环境
|
# 设置时区和语言环境
|
||||||
ENV TZ="Asia/Shanghai"
|
ENV TZ="Asia/Shanghai"
|
||||||
ENV LANG="en_US.UTF-8"
|
ENV LANG="en_US.UTF-8"
|
||||||
# 运行环境
|
|
||||||
ENV APPENV="prod"
|
ENV APPENV="prod"
|
||||||
|
|
||||||
WORKDIR /usr/local/omc
|
WORKDIR /usr/local/etc/omc
|
||||||
|
COPY --from=build-golang /frontend ./frontend
|
||||||
|
COPY --from=build-golang /backend/restagent/omc /usr/local/bin/omc
|
||||||
|
COPY --from=build-golang /docker/etc/omc.yaml ./omc.yaml
|
||||||
|
COPY --from=build-golang /docker/static ./static
|
||||||
|
COPY --from=build-golang /docker/logs /var/log/omc
|
||||||
|
COPY --from=build-golang /docker/nginx/cert /etc/nginx/cert
|
||||||
|
COPY --from=build-golang /docker/nginx/nginx.conf /etc/nginx/nginx.conf
|
||||||
|
|
||||||
# 前端编译
|
EXPOSE 33030 33033 33040 33060 80 22
|
||||||
COPY --from=build-nodejs /frontend/dist /usr/local/bin/omc-frontend
|
|
||||||
RUN touch /usr/local/bin/omc-frontend/config.js
|
|
||||||
|
|
||||||
# 后端编译
|
CMD ["/usr/sbin/sshd -D &", ";", "nginx", ";", "/usr/local/bin/omc", "--env", "${APPENV}", "-c", "/usr/local/etc/omc/omc.yaml"]
|
||||||
COPY --from=build-go /backend/restagent/backend /usr/local/bin/omc-backend
|
# CMD ["/usr/sbin/sshd", "-D", "&", ";", "nginx", ";", "/usr/local/bin/omc", "--env", "${APPENV}", "-c", "/usr/local/etc/omc/omc.yaml"]
|
||||||
|
|
||||||
# 其余文件
|
# 构建
|
||||||
COPY ./backend/docker/omc ./
|
# docker build --build-arg VERSION=241101 -t omc:2.241101 .
|
||||||
RUN mkdir -p /var/log/omc && mkdir /var/log/omc/nginx
|
# docker run -it omc:2.241101 sh
|
||||||
RUN touch /var/log/omc/nginx/error.log
|
# /usr/sbin/sshd -D & ; nginx ; /usr/local/bin/omc --env prod -c /usr/local/etc/omc/omc.yaml
|
||||||
RUN touch /var/log/omc/nginx/access.log
|
|
||||||
|
|
||||||
EXPOSE 22 80 3030 6060
|
|
||||||
|
|
||||||
CMD ["/bin/sh", "-c", "/usr/sbin/sshd && nginx -c /usr/local/omc/nginx/nginx.conf && /usr/local/bin/omc-backend --env ${APPENV} -c /usr/local/omc/etc/omc.yaml"]
|
|
||||||
|
|||||||
46
docker/Dockerfile.golang
Normal file
46
docker/Dockerfile.golang
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
FROM golang:1.22-alpine AS buildGo
|
||||||
|
|
||||||
|
ARG VERSION
|
||||||
|
|
||||||
|
ENV CGO_ENABLED 1
|
||||||
|
ENV GOOS linux
|
||||||
|
ENV GOPROXY https://goproxy.cn,direct
|
||||||
|
|
||||||
|
## 安装时区工具
|
||||||
|
RUN apk add --no-cache gcc musl-dev libpcap-dev tzdata openssh \
|
||||||
|
&& ssh-keygen -A \
|
||||||
|
&& adduser -D omcuser \
|
||||||
|
&& echo 'omcuser:password' | chpasswd \
|
||||||
|
&& mkdir /home/omcuser/.ssh \
|
||||||
|
&& chmod 700 /home/omcuser/.ssh
|
||||||
|
|
||||||
|
# 设置时区和语言环境
|
||||||
|
ENV TZ="Asia/Shanghai"
|
||||||
|
ENV LANG="en_US.UTF-8"
|
||||||
|
|
||||||
|
WORKDIR /backend
|
||||||
|
|
||||||
|
## 复制实际需要的文件到工作目录
|
||||||
|
COPY ./restagent/config ./restagent/config
|
||||||
|
COPY ./restagent/etc ./restagent/etc
|
||||||
|
COPY ./restagent/restagent.go ./restagent/restagent.go
|
||||||
|
COPY ./features ./features
|
||||||
|
COPY ./lib ./lib
|
||||||
|
COPY ./src ./src
|
||||||
|
COPY ./go.sum ./
|
||||||
|
COPY ./go.mod ./
|
||||||
|
|
||||||
|
RUN cd /backend && go mod download
|
||||||
|
RUN cd /backend/restagent && go build -o omc_api -v -ldflags "-s -w \
|
||||||
|
-X 'be.ems/lib/global.Version=${VERSION}' \
|
||||||
|
-X 'be.ems/lib/global.BuildTime=`date`' \
|
||||||
|
-X 'be.ems/lib/global.GoVer=`go version`'"
|
||||||
|
|
||||||
|
EXPOSE 33030 33033 33040 80 22
|
||||||
|
|
||||||
|
CMD [ "/backend/restagent/omc_api", "--env", "prod", "-c", "/backend/restagent/etc/restconf.yaml"]
|
||||||
|
|
||||||
|
# 构建
|
||||||
|
# docker build --build-arg VERSION=241031 -t omc:2.241031 .
|
||||||
|
# docker run -it omc:2.241031 sh
|
||||||
|
# /backend/restagent/omc_api --env prod -c /backend/restagent/etc/restconf.yaml
|
||||||
@@ -1,23 +1,38 @@
|
|||||||
# Docker 编译
|
# Docker 编译
|
||||||
|
|
||||||
编译目录内含 `frontend` 和 `backend` 两个项目代码,将后端项目代码中的 `backend/docker/Dockerfile` 文件移动到最外层目录下。
|
编译目录内含 `omc_web` 和 `omc_api` 两个项目代码
|
||||||
|
|
||||||
|
将后端项目代码中的 `docker/Dockerfile` 文件移动到最外层目录下,`docker/omc`是内部文件挂载的文件资源。
|
||||||
|
|
||||||
编译目录结构
|
编译目录结构
|
||||||
|
|
||||||
```text
|
```text
|
||||||
omc
|
probject
|
||||||
├── frontend 目录-前端项目代码
|
├── omc_web 目录-前端项目代码
|
||||||
├── backend 目录-后端项目代码
|
├── omc_api 目录-后端项目代码
|
||||||
└── Dockerfile 文件-Docker编译需要
|
└── 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` 变量是后端程序打包版本号注入
|
- `VERSION` 变量是后端程序打包版本号注入
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|
||||||
docker build --build-arg VERSION="2.240112" -t omc:2.240112 .
|
docker build --build-arg VERSION="2.241101" -t omc:2.241101 .
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -30,37 +45,40 @@ docker build --build-arg VERSION="2.240112" -t omc:2.240112 .
|
|||||||
docker run -d \
|
docker run -d \
|
||||||
--privileged=true \
|
--privileged=true \
|
||||||
--restart=always \
|
--restart=always \
|
||||||
-p 3222:22 \
|
-p 8822:22 \
|
||||||
-p 3280:80 \
|
-p 8880:80 \
|
||||||
-p 3230:3030 \
|
-p 8830:33030 \
|
||||||
-p 3260:6060 \
|
-p 8833:33033 \
|
||||||
-v /home/mask/Probject/omc/omc:/usr/local/omc \
|
-p 8840:33040 \
|
||||||
-v /home/mask/Probject/omc/logs:/var/log/omc \
|
-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 TZ="Asia/Shanghai" \
|
||||||
|
-e APPENV="local" \
|
||||||
-m 512M \
|
-m 512M \
|
||||||
--name omc_002 \
|
--name omc2.241101 \
|
||||||
omc:2.240112
|
omc:2.241101
|
||||||
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 镜像导出导入
|
## 镜像导出导入
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
docker save omc:2.240112 -o omc_r2.240112.tar
|
docker save omc:2.241101 -o omc_r2.241101.tar
|
||||||
|
|
||||||
docker load -i omc_r2.240112.tar
|
docker load -i omc_r2.241101.tar
|
||||||
```
|
```
|
||||||
|
|
||||||
## 调试
|
## 调试
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
|
|
||||||
docker run -it omcxxx sh
|
docker run -it omc:xxx sh
|
||||||
|
|
||||||
docker exec -it omxxx 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
|
||||||
/usr/sbin/sshd && nginx -c /usr/local/omc/nginx/nginx.conf && /usr/local/omc/bin/backend --env prod -c /usr/local/omc/etc/omc.yaml
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user