FROM alpine:3.11 as builder

ENV RESTY_VERSION=1.15.8.2
ENV RESTY_SHA256_SUM=436b4e84d547a97a18cf7a2522daf819da8087b188468946b5a89c0dd1ca5d16

RUN apk --no-cache add \
    bash \
    coreutils \
    perl \
    make \
    automake \
    autoconf \
    gcc \
    git \
    curl \
    lua5.1-dev \
    musl-dev \
    pcre-dev \
    zlib-dev \
    lua5.1 \
    luarocks5.1 \
    openssl \
    openssl-dev \
    pcre-dev \
    zlib-dev

RUN ln -s /usr/bin/aclocal-1.16 /usr/bin/aclocal-1.15
RUN ln -s /usr/bin/automake-1.16 /usr/bin/automake-1.15

RUN wget https://openresty.org/download/openresty-$RESTY_VERSION.tar.gz
RUN echo "$RESTY_SHA256_SUM openresty-$RESTY_VERSION.tar.gz" | sha256sum -c - || exit 1
RUN tar xvf openresty-$RESTY_VERSION.tar.gz
RUN cd openresty-$RESTY_VERSION && \
    ./configure --with-pcre-jit --with-ipv6 --with-http_v2_module && \
    make && \
    make install

ADD gin.patch /gin.patch
RUN git clone https://github.com/ostinelli/gin

WORKDIR /gin
RUN patch -N -p1 < ../gin.patch
RUN luarocks-5.1 make

WORKDIR /
RUN git clone https://github.com/koreader/koreader-sync-server.git

FROM thallian/confd-env:latest

RUN addgroup syncer
RUN adduser -h /app -D -G syncer syncer

COPY --from=builder /usr/local/openresty /usr/local/openresty
COPY --from=builder /usr/local/share/lua/5.1 /usr/local/share/lua/5.1
COPY --from=builder /usr/local/lib/lua/5.1 /usr/local/lib/lua/5.1
COPY --from=builder /usr/local/lib/luarocks/rocks-5.1 /usr/local/lib/luarocks/rocks-5.1
COPY --from=builder /usr/local/bin/gin /usr/local/bin/gin
COPY --from=builder --chown=syncer:syncer  /koreader-sync-server /app/server

RUN ln -s /usr/local/openresty/nginx/sbin/nginx /usr/local/bin/nginx

RUN apk --no-cache add \
    redis \
    openssl \
    libgcc \
    pcre \
    lua5.1 \
    unzip \
    zlib

ADD /rootfs /

ENV GIN_ENV production

WORKDIR /

#RUN ln -s /usr/lib/lua /usr/local/lib/lua
#RUN ln -s /usr/share/lua/ /usr/local/share/lua

EXPOSE 7200
VOLUME /var/lib/redis/