diff --git a/Dockerfile b/Dockerfile index 6b08973..fcf742b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,53 @@ +FROM node:14.18-alpine as web + +WORKDIR /opt/workflow + +RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.tuna.tsinghua.edu.cn/g' /etc/apk/repositories +RUN apk update && \ + apk add --no-cache git && \ + rm -rf /var/cache/apk/* /tmp/* /var/tmp/* $HOME/.cache +RUN git clone https://gitee.com/yllan/ferry_web.git + +WORKDIR ferry_web + +RUN npm install -g cnpm --registry=https://registry.npm.taobao.org +RUN cnpm install +RUN echo $'# just a flag\n\ +ENV = \'production\'\n\n\ +# base api\n\ +VUE_APP_BASE_API = \'\''\ +> .env.production +RUN npm run build:prod + FROM golang:1.15 AS build -WORKDIR /opt/ferry - +WORKDIR /opt/workflow/ferry COPY . . - ARG GOPROXY="https://goproxy.cn" - RUN go mod download -RUN go build -o ferry . +RUN CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -ldflags="-s -w" -o ferry . +FROM alpine AS prod -FROM debian:buster AS prod +MAINTAINER lanyulei -WORKDIR /opt/ferry +WORKDIR /opt/workflow/ferry -COPY --from=build /opt/ferry/ferry /opt/ferry/ -COPY config/ /opt/ferry/default_config/ -COPY template/ /opt/ferry/template/ -COPY docker/entrypoint.sh /opt/ferry/ +COPY --from=build /opt/workflow/ferry/ferry /opt/workflow/ferry/ +COPY config/ /opt/workflow/ferry/default_config/ +COPY template/ /opt/workflow/ferry/template/ +COPY docker/entrypoint.sh /opt/workflow/ferry/ RUN mkdir -p logs static/uploadfile static/scripts static/template -RUN chmod 755 /opt/ferry/entrypoint.sh -RUN chmod 755 /opt/ferry/ferry +RUN chmod 755 /opt/workflow/ferry/entrypoint.sh +RUN chmod 755 /opt/workflow/ferry/ferry + +COPY --from=web /opt/workflow/ferry_web/web /opt/workflow/ferry/static/web +COPY --from=web /opt/workflow/ferry_web/web/index.html /opt/workflow/ferry/template/web/ + +RUN mv /opt/workflow/ferry/static/web/static/web/* /opt/workflow/ferry/static/web/ +RUN rm -rf /opt/workflow/ferry/static/web/static EXPOSE 8002 -VOLUME [ "/opt/ferry/config" ] -ENTRYPOINT [ "/opt/ferry/entrypoint.sh" ] +VOLUME [ "/opt/workflow/ferry/config" ] +ENTRYPOINT [ "/opt/workflow/ferry/entrypoint.sh" ] diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh index fe27485..53142ae 100755 --- a/docker/entrypoint.sh +++ b/docker/entrypoint.sh @@ -1,12 +1,12 @@ -#!/bin/bash +#!/bin/sh set -e -if [[ ! -f /opt/ferry/config/settings.yml ]] +if [[ ! -f /opt/workflow/ferry/config/settings.yml ]] then - cp /opt/ferry/default_config/* /opt/ferry/config/ + cp /opt/workflow/ferry/default_config/* /opt/workflow/ferry/config/ fi -if [[ -f /opt/ferry/config/needinit ]] +if [[ -f /opt/workflow/ferry/config/needinit ]] then - /opt/ferry/ferry init -c=/opt/ferry/config/settings.yml - rm -f /opt/ferry/config/needinit + /opt/workflow/ferry/ferry init -c=/opt/workflow/ferry/config/settings.yml + rm -f /opt/workflow/ferry/config/needinit fi -/opt/ferry/ferry server -c=/opt/ferry/config/settings.yml +/opt/workflow/ferry/ferry server -c=/opt/workflow/ferry/config/settings.yml