blob: b10e661b7e41a55975e3e02310168c053185d26c [file] [log] [blame]
#
# 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.
#
# apigateway
#
# VERSION 1.13.6.1
#
# From https://hub.docker.com/_/alpine/
#
FROM alpine:3.9
ENV CJOSE_VERSION=0.5.1
ENV STEP_VERSION=0.11.0
RUN apk update && \
apk add \
gcc tar zlib zlib-dev wget make musl-dev g++ curl \
libtool readline luajit luajit-dev unzip coreutils \
openssl openssl-dev git jansson jansson-dev
WORKDIR /tmp
RUN wget https://luarocks.org/releases/luarocks-3.1.3.tar.gz && \
tar zxpf luarocks-3.1.3.tar.gz && \
cd luarocks-3.1.3 && \
./configure && \
make build && \
make install
RUN echo " ... installing cjose ... " \
&& mkdir -p /tmp/api-gateway \
&& curl -L -k https://github.com/cisco/cjose/archive/${CJOSE_VERSION}.tar.gz -o /tmp/api-gateway/cjose-${CJOSE_VERSION}.tar.gz \
&& tar -xf /tmp/api-gateway/cjose-${CJOSE_VERSION}.tar.gz -C /tmp/api-gateway/ \
&& cd /tmp/api-gateway/cjose-${CJOSE_VERSION} \
&& sh configure \
&& make && make install \
&& rm -rf /tmp/api-gateway
RUN echo " ... installing step cli ... " \
&& mkdir -p /tmp/step \
&& curl -L https://github.com/smallstep/cli/releases/download/v${STEP_VERSION}/step_${STEP_VERSION}_linux_amd64.tar.gz -o /tmp/step/step_${STEP_VERSION}.tar.gz \
&& tar -xf /tmp/step/step_${STEP_VERSION}.tar.gz -C /tmp/step \
&& cd /tmp/step/step_${STEP_VERSION} \
&& mv ./bin/step /usr/bin/step
RUN echo " ... generating JWK/JWT ... " \
&& step crypto jwk create /tmp/pub.jwk.json /tmp/prv.jwk.json -f --insecure --no-password --kty RSA --kid test-jwk \
&& cat /tmp/pub.jwk.json | step crypto jwk keyset add /tmp/jwk.json \
&& export JWT_EXPIRY=$(date -d "+10 days" +%s) \
&& echo '{"email":"testuser@openwhisk.apache.org"}' | step crypto jwt sign --iss https://openwhisk.apache.org/apigateway --sub "test user" --exp $JWT_EXPIRY --aud tests --key /tmp/prv.jwk.json > /tmp/token.jwt
RUN mkdir -p /etc/api-gateway/tests
WORKDIR /etc/api-gateway/tests
# Install Lua dependencies
RUN luarocks install busted \
&& luarocks install luacov \
&& mkdir -p lua_modules \
&& luarocks install --tree=lua_modules lua-cjson \
&& luarocks install --tree=lua_modules luasocket \
&& luarocks install --tree=lua_modules sha1 \
&& luarocks install --tree=lua_modules md5 \
&& luarocks install --tree=lua_modules net-url \
&& luarocks install --tree=lua_modules luafilesystem \
&& luarocks install --tree=lua_modules lua-resty-http 0.10 \
&& luarocks install --tree=lua_modules https://github.com/mhamann/lua-resty-cjose/raw/master/lua-resty-cjose-0.5-0.rockspec
COPY . /etc/api-gateway
CMD sh run-tests.sh