1
0

feat: docker编译

This commit is contained in:
TsMask
2024-01-11 15:08:34 +08:00
parent e94ca04f16
commit 7264cf6d57
3 changed files with 87 additions and 29 deletions

View File

@@ -1,24 +1,20 @@
## 第一阶段 ====> Nodejs打包编译输出前端资源
FROM node:18-alpine AS buildNode
ENV FRONTEND_DIR = "/jenkins/.jenkins/workspace/ems_frontend_vue3"
FROM node:18-alpine AS build-nodejs
## 工作目录存放程序源码
WORKDIR /frontend
## 复制实际需要的文件到工作目录
COPY ${FRONTEND_DIR} ./
COPY ./frontend ./
RUN npm config set registry https://registry.npmmirror.com
RUN npm install && npm run build
RUN cd /frontend && npm install && npm run build
## 第二阶段 ====> GO打包编译输出后端程序
FROM golang:alpine AS buildGo
FROM golang:alpine AS build-go
ARG VERSION
ENV BACKEND_DIR = "/jenkins/.jenkins/workspace/ems_backend"
ENV CGO_ENABLED 0
ENV GOOS linux
ENV GOPROXY https://goproxy.cn,direct
@@ -26,20 +22,21 @@ ENV GOPROXY https://goproxy.cn,direct
WORKDIR /backend
## 复制实际需要的文件到工作目录
COPY ${BACKEND_DIR}/docker ./docker
COPY ${BACKEND_DIR}/restagent/config ./restagent/config
COPY ${BACKEND_DIR}/restagent/etc ./restagent/etc
COPY ${BACKEND_DIR}/restagent/restagent.go ./restagent/restagent.go
COPY ${BACKEND_DIR}/features ./features
COPY ${BACKEND_DIR}/lib ./lib
COPY ${BACKEND_DIR}/src ./src
COPY ${BACKEND_DIR}/go.sum ./
COPY ${BACKEND_DIR}/go.mod ./
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/restagent && go build -o omc -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 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 -ldflags="-s -w" -o backend
## 第三阶段 ====> 构建前后端融合镜像
## 镜像基座 ====> GO打包编译输出后端程序
FROM alpine
## 安装时区工具
@@ -55,11 +52,13 @@ ENV TZ="Asia/Shanghai"
ENV LANG="en_US.UTF-8"
WORKDIR /usr/local/omc
COPY --from=buildNode /frontend/dist /usr/local/omc/bin/frontend
COPY --from=buildGo /backend/restagent/omc /usr/local/omc/bin/backend
COPY --from=buildGo /backend/docker/config.yaml /usr/local/omc/etc/config.yaml
COPY --from=buildGo /backend/docker/nginx.conf /etc/nginx/nginx.conf
# 分步编译
COPY --from=build-nodejs /frontend/dist /usr/local/omc/bin/frontend
COPY --from=build-go /backend/restagent/backend /usr/local/omc/bin/backend
# 配置文件
COPY ./backend/docker/config.yaml /usr/local/omc/etc/config.yaml
COPY ./backend/docker/nginx.conf /etc/nginx/nginx.conf
EXPOSE 3030 80 22
EXPOSE 22 80 3030
CMD ["/usr/sbin/sshd", "-D", ";", "nginx", "-g", "daemon off;", ";", "/usr/local/omc/bin/backend", "--env", "prod", "-c", "/usr/local/omc/etc/config.yaml"]
CMD ["/bin/sh", "-c", "/usr/sbin/sshd && nginx && /usr/local/omc/bin/backend --env prod -c /usr/local/omc/etc/config.yaml"]