| # |
| # 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 |