1
0
Files
omc_api/docker/Dockerfile
2024-01-12 10:25:28 +08:00

74 lines
2.1 KiB
Docker

## 第一阶段 ====> Nodejs打包编译输出前端资源
FROM node:18-alpine AS build-nodejs
## 工作目录存放程序源码
WORKDIR /frontend
## 复制实际需要的文件到工作目录
COPY ./frontend ./
RUN npm config set registry https://registry.npmmirror.com
RUN cd /frontend && npm install && npm run build
## 第二阶段 ====> GO打包编译输出后端程序
FROM golang:alpine AS build-go
ARG VERSION
ENV CGO_ENABLED 0
ENV GOOS linux
ENV GOPROXY https://goproxy.cn,direct
WORKDIR /backend
## 复制实际需要的文件到工作目录
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 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
## 镜像基座 ====> 编译输出前后端可运行的程序
FROM alpine
## 安装工具
RUN apk add --no-cache tzdata nginx openssh \
&& ssh-keygen -A \
&& adduser -D omc \
&& echo 'omc:password' | chpasswd \
&& mkdir /home/omc/.ssh \
&& chmod 700 /home/omc/.ssh
# 设置时区和语言环境
ENV TZ="Asia/Shanghai"
ENV LANG="en_US.UTF-8"
# 运行环境
ENV APPENV="prod"
WORKDIR /usr/local/omc
# 前端编译
COPY --from=build-nodejs /frontend/dist /usr/local/bin/omc-frontend
RUN touch /usr/local/bin/omc-frontend/config.js
# 后端编译
COPY --from=build-go /backend/restagent/backend /usr/local/bin/omc-backend
# 其余文件
COPY ./backend/docker/omc ./
RUN mkdir -p /var/log/omc && mkdir /var/log/omc/nginx
RUN touch /var/log/omc/nginx/error.log
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"]