| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, | |
| # software distributed under the License is distributed on an | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| # KIND, either express or implied. See the License for the | |
| # specific language governing permissions and limitations | |
| # under the License. | |
| FROM golang:1.25-alpine AS golang-builder | |
| LABEL maintainer="linkinstar@apache.org" | |
| ARG GOPROXY | |
| # ENV GOPROXY ${GOPROXY:-direct} | |
| # ENV GOPROXY=https://proxy.golang.com.cn,direct | |
| ENV GOPATH /go | |
| ENV GOROOT /usr/local/go | |
| ENV PACKAGE github.com/apache/answer | |
| ENV BUILD_DIR ${GOPATH}/src/${PACKAGE} | |
| ENV ANSWER_MODULE ${BUILD_DIR} | |
| ARG TAGS="sqlite sqlite_unlock_notify" | |
| ENV TAGS "bindata timetzdata $TAGS" | |
| ARG CGO_EXTRA_CFLAGS | |
| COPY . ${BUILD_DIR} | |
| WORKDIR ${BUILD_DIR} | |
| RUN apk --no-cache add build-base git bash nodejs npm && npm install -g pnpm@9.7.0 \ | |
| && make clean build | |
| RUN chmod 755 answer | |
| RUN ["/bin/bash","-c","script/build_plugin.sh"] | |
| RUN cp answer /usr/bin/answer | |
| RUN mkdir -p /data/uploads && chmod 777 /data/uploads \ | |
| && mkdir -p /data/i18n && cp -r i18n/*.yaml /data/i18n | |
| FROM alpine | |
| LABEL maintainer="linkinstar@apache.org" | |
| ARG TIMEZONE | |
| ENV TIMEZONE=${TIMEZONE:-"Asia/Shanghai"} | |
| RUN apk update \ | |
| && apk --no-cache add \ | |
| bash \ | |
| ca-certificates \ | |
| curl \ | |
| dumb-init \ | |
| gettext \ | |
| openssh \ | |
| sqlite \ | |
| gnupg \ | |
| tzdata \ | |
| && ln -sf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime \ | |
| && echo "${TIMEZONE}" > /etc/timezone | |
| COPY --from=golang-builder /usr/bin/answer /usr/bin/answer | |
| COPY --from=golang-builder /data /data | |
| COPY /script/entrypoint.sh /entrypoint.sh | |
| RUN chmod 755 /entrypoint.sh | |
| VOLUME /data | |
| EXPOSE 80 | |
| ENTRYPOINT ["/entrypoint.sh"] |