88 lines
3.7 KiB
Docker
88 lines
3.7 KiB
Docker
FROM node:12.16-alpine as build-frontend-deps
|
|
|
|
ARG CI
|
|
ARG DRONE
|
|
ARG DRONE_TAG
|
|
ARG DRONE_COMMIT
|
|
ARG DRONE_BRANCH
|
|
|
|
ENV SKIP_FRONTEND_TEST=true
|
|
|
|
RUN apk add --no-cache --update git
|
|
ADD frontend/package.json /srv/frontend/package.json
|
|
ADD frontend/package-lock.json /srv/frontend/package-lock.json
|
|
RUN cd /srv/frontend && CI=true npm ci
|
|
|
|
FROM node:12.16-alpine as build-frontend
|
|
|
|
ARG CI
|
|
ARG NODE_ENV=production
|
|
ENV SKIP_FRONTEND_TEST=true
|
|
ENV HUSKY_SKIP_INSTALL=true
|
|
|
|
COPY --from=build-frontend-deps /srv/frontend/node_modules /srv/frontend/node_modules
|
|
ADD frontend /srv/frontend
|
|
RUN cd /srv/frontend && \
|
|
npm run build && \
|
|
rm -rf ./node_modules
|
|
|
|
FROM umputun/baseimage:buildgo-latest as build-backend
|
|
|
|
ARG GITHUB_TOKEN
|
|
ENV SKIP_BACKEND_TEST=true
|
|
|
|
WORKDIR /build/backend
|
|
ADD backend /build/backend
|
|
ADD README.md /build/
|
|
ADD LICENSE /build/
|
|
|
|
ADD .git/ /build/backend/.git/
|
|
|
|
COPY --from=build-frontend /srv/frontend/public/ web
|
|
|
|
RUN \
|
|
export WEB_ROOT=/build/backend/web && \
|
|
find . -regex '.*\.\(html\|js\|mjs\)$' -print -exec sed -i "s|{% REMARK_URL %}|http://127.0.0.1:8080|g" {} \; && \
|
|
statik --src=${WEB_ROOT} --dest=/build/backend/app/rest -p api -f && \
|
|
statik --src=/build/backend/templates --dest=/build/backend/app -p templates -ns templates -f && \
|
|
ls -la /build/backend/app/templates/statik.go && \
|
|
ls -la /build/backend/app/rest/api/statik.go && \
|
|
ls -la /build/backend/web/
|
|
|
|
# if DRONE presented use DRONE_* git env to make version
|
|
RUN \
|
|
if [ -z "$DRONE" ] ; then \
|
|
echo "runs outside of drone" && version=$("/script/version.sh"); \
|
|
else version=${DRONE_TAG}${DRONE_BRANCH}${DRONE_PULL_REQUEST}-${DRONE_COMMIT:0:7}-$(date +%Y%m%d-%H:%M:%S); fi && \
|
|
echo "version=$version" && \
|
|
export GOFLAGS="-mod=vendor" && \
|
|
GOOS=linux GOARCH=amd64 go build -o remark42.linux-amd64 -ldflags "-X main.revision=${version} -s -w" ./app && \
|
|
GOOS=linux GOARCH=386 go build -o remark42.linux-386 -ldflags "-X main.revision=${version} -s -w" ./app && \
|
|
GOOS=linux GOARCH=arm go build -o remark42.linux-arm -ldflags "-X main.revision=${version} -s -w" ./app && \
|
|
GOOS=linux GOARCH=arm64 go build -o remark42.linux-arm64 -ldflags "-X main.revision=${version} -s -w" ./app && \
|
|
GOOS=windows GOARCH=amd64 go build -o remark42.windows-amd64.exe -ldflags "-X main.revision=${version} -s -w" ./app && \
|
|
GOOS=darwin GOARCH=amd64 go build -o remark42.darwin-amd64 -ldflags "-X main.revision=${version} -s -w" ./app && \
|
|
GOOS=darwin GOARCH=arm64 go build -o remark42.darwin-arm64 -ldflags "-X main.revision=${version} -s -w" ./app && \
|
|
GOOS=freebsd GOARCH=amd64 go build -o remark42.freebsd-amd64 -ldflags "-X main.revision=${version} -s -w" ./app
|
|
|
|
RUN \
|
|
if [ -z "$DRONE_TAG" ] ; then \
|
|
echo "runs outside of drone" && tag=""; \
|
|
else tag=_${DRONE_TAG}; fi && \
|
|
apk add --no-cache --update zip && \
|
|
cp ../LICENSE ./LICENSE && cp ../README.md ./README.md && \
|
|
tar cvzf remark42${tag}.linux-amd64.tar.gz remark42.linux-amd64 LICENSE README.md && \
|
|
tar cvzf remark42${tag}.linux-386.tar.gz remark42.linux-386 LICENSE README.md && \
|
|
tar cvzf remark42${tag}.linux-arm.tar.gz remark42.linux-arm LICENSE README.md && \
|
|
tar cvzf remark42${tag}.linux-arm64.tar.gz remark42.linux-arm64 LICENSE README.md && \
|
|
tar cvzf remark42${tag}.darwin-amd64.tar.gz remark42.darwin-amd64 LICENSE README.md && \
|
|
tar cvzf remark42${tag}.darwin-arm64.tar.gz remark42.darwin-arm64 LICENSE README.md && \
|
|
tar cvzf remark42${tag}.freebsd-amd64.tar.gz remark42.freebsd-amd64 LICENSE README.md && \
|
|
zip remark42${tag}.windows-amd64.zip remark42.windows-amd64.exe LICENSE README.md
|
|
|
|
|
|
FROM alpine
|
|
COPY --from=build-backend /build/backend/remark42.* /artifacts/
|
|
RUN ls -la /artifacts/*
|
|
CMD ["sleep", "100"]
|