Skip to content

Commit 5bfb6b7

Browse files
authored
release v0.8.3; optimize base Docker image size (localstack#487)
1 parent 46ca743 commit 5bfb6b7

File tree

6 files changed

+31
-10
lines changed

6 files changed

+31
-10
lines changed

.travis.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ script:
4444
# but instead reinstall using 2.x here, as that allows us to use some cached libs etc.
4545
- "make reinstall-p2 > /dev/null"
4646
- make init
47-
- DEBUG=1 LAMBDA_EXECUTOR=docker make test
48-
- LAMBDA_EXECUTOR=local USE_SSL=1 make test
47+
- DEBUG=1 LAMBDA_EXECUTOR=docker USE_SSL=1 make test
4948
# run Java tests
5049
- make test-java-if-changed
5150
# build Docker image, and push it (if on master branch)

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ localstack web
327327

328328
## Change Log
329329

330+
* v0.8.3: Fix DDB stream events for UPDATE operations; fix DDB streams sequence numbers; fix transfer-encoding for DDB; fix requests with missing content-length header; support non-ascii content in DynamoDB items; map external port for SQS queue URLs; default to LAMBDA_REMOTE_DOCKER=true if running in Docker; S3 lifecycle support; reduce Docker image size
330331
* v0.8.2: Fix S3 bucket notification configuration; CORS headers for API Gateway; fix >128k S3 multipart uploads; return valid ShardIDs in DynamoDB Streams; fix hardcoded "ddblocal" DynamoDB TableARN; import default service ports from localstack-client; fix S3 bucket policy response; Execute lambdas asynchronously if the source is a topic
331332
* v0.8.1: Improvements in Lambda API: publish-version, list-version, function aliases; use single map with Lambda function details; workaround for SQS .fifo queues; add test for S3 upload; initial support for SSM; fix regex to replace SQS queue URL hostnames; update linter (single quotes); use `docker.for.mac.localhost` to connect to LocalStack from Docker on Mac; fix b64 encoding for Java Lambdas; fix path of moto_server command
332333
* v0.8.0: Fix request data in `GenericProxyHandler`; add `$PORT_WEB_UI` and `$HOSTNAME_EXTERNAL` configs; API Gateway path parameters; enable flake8 linting; add config for service backend URLs; use ElasticMQ instead of moto for SQS; expose `$LOCALSTACK_HOSTNAME`; custom environment variable support for Lambda; improve error logging and installation for Java/JUnit; add support for S3 REST Object POST

bin/Dockerfile.base

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,18 @@ MAINTAINER Waldemar Hummer (waldemar.hummer@gmail.com)
44
LABEL authors="Waldemar Hummer (waldemar.hummer@gmail.com)"
55

66
# install some common libs
7-
RUN apk add --no-cache autoconf automake build-base ca-certificates curl docker git \
7+
RUN apk add --no-cache autoconf automake build-base ca-certificates curl git \
88
libffi-dev libtool linux-headers make openssl openssl-dev python python-dev \
99
py-pip supervisor tar xz zip && \
1010
update-ca-certificates
1111

12+
# install Docker (CLI only)
13+
RUN docker_version=17.05.0-ce; \
14+
curl -fsSLO https://get.docker.com/builds/Linux/x86_64/docker-$docker_version.tgz \
15+
&& tar xzvf docker-$docker_version.tgz \
16+
&& mv docker/docker /usr/local/bin \
17+
&& rm -r docker docker-$docker_version.tgz
18+
1219
# Install Java - taken from official repo:
1320
# https://github.com/docker-library/openjdk/blob/master/8-jdk/alpine/Dockerfile)
1421
ENV LANG C.UTF-8
@@ -24,7 +31,6 @@ ENV JAVA_ALPINE_VERSION 8.131.11-r2
2431
RUN set -x && apk add --no-cache openjdk8="$JAVA_ALPINE_VERSION" \
2532
&& [ "$JAVA_HOME" = "$(docker-java-home)" ]
2633

27-
2834
# Install Maven - taken from official repo:
2935
# https://github.com/carlossg/docker-maven/blob/master/jdk-8/Dockerfile)
3036
ARG MAVEN_VERSION=3.5.2
@@ -50,6 +56,8 @@ ADD requirements.txt .
5056
RUN mkdir -p /opt/code/localstack/localstack/infra && \
5157
wget -O /tmp/localstack.es.zip \
5258
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.zip && \
59+
wget -O /tmp/elasticmq-server.jar \
60+
https://s3-eu-west-1.amazonaws.com/softwaremill-public/elasticmq-server-0.13.8.jar && \
5361
(cd localstack/infra/ && unzip -q /tmp/localstack.es.zip && \
5462
mv elasticsearch* elasticsearch && rm /tmp/localstack.es.zip) && \
5563
mkdir -p /opt/code/localstack/localstack/infra/dynamodb && \
@@ -72,3 +80,11 @@ ADD localstack/dashboard/web/package.json localstack/dashboard/web/package.json
7280

7381
# install web dashboard dependencies
7482
RUN make install-web
83+
84+
# install npm dependencies
85+
ADD localstack/package.json localstack/package.json
86+
RUN cd localstack && npm install
87+
88+
# clean up (layers are later squashed into a single one)
89+
RUN rm -rf /root/.npm; \
90+
apk del --purge autoconf automake build-base linux-headers openssl-dev python-dev

localstack/constants.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import localstack_client.config
33

44
# LocalStack version
5-
VERSION = '0.8.2'
5+
VERSION = '0.8.3'
66

77
# default AWS region
88
if 'DEFAULT_REGION' not in os.environ:
@@ -71,6 +71,8 @@
7171
# installation constants
7272
ELASTICSEARCH_JAR_URL = 'https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.3.0.zip'
7373
DYNAMODB_JAR_URL = 'https://s3-us-west-2.amazonaws.com/dynamodb-local/dynamodb_local_latest.zip'
74+
ELASTICMQ_JAR_URL = 'https://s3-eu-west-1.amazonaws.com/softwaremill-public/elasticmq-server-0.13.8.jar'
75+
STS_JAR_URL = 'http://central.maven.org/maven2/com/amazonaws/aws-java-sdk-sts/1.11.14/aws-java-sdk-sts-1.11.14.jar'
7476

7577
# API endpoint for analytics events
7678
API_ENDPOINT = 'https://api.localstack.cloud/v1'

localstack/services/awslambda/lambda_api.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,11 @@ def run_lambda(func, event, context, func_arn, suppress_output=False, async=Fals
266266
runtime = arn_to_lambda.get(func_arn).runtime
267267
handler = arn_to_lambda.get(func_arn).handler
268268
environment = arn_to_lambda.get(func_arn).envvars
269+
270+
# configure USE_SSL in environment
271+
if config.USE_SSL:
272+
environment['USE_SSL'] = '1'
273+
269274
if use_docker():
270275
handler_args = '"%s"' % handler
271276
entrypoint = ''

localstack/services/install.py

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
import shutil
77
import logging
88
import tempfile
9-
from localstack.constants import (DEFAULT_SERVICE_PORTS,
9+
from localstack.constants import (DEFAULT_SERVICE_PORTS, ELASTICMQ_JAR_URL, STS_JAR_URL,
1010
ELASTICSEARCH_JAR_URL, DYNAMODB_JAR_URL, LOCALSTACK_MAVEN_VERSION)
1111
from localstack.utils.common import download, parallelize, run, mkdir, save_file, unzip, rm_rf
1212

@@ -24,8 +24,6 @@
2424
TMP_ARCHIVE_DDB = os.path.join(tempfile.gettempdir(), 'localstack.ddb.zip')
2525
TMP_ARCHIVE_STS = os.path.join(tempfile.gettempdir(), 'aws-java-sdk-sts.jar')
2626
TMP_ARCHIVE_ELASTICMQ = os.path.join(tempfile.gettempdir(), 'elasticmq-server.jar')
27-
URL_STS_JAR = 'http://central.maven.org/maven2/com/amazonaws/aws-java-sdk-sts/1.11.14/aws-java-sdk-sts-1.11.14.jar'
28-
URL_ELASTICMQ_JAR = 'https://s3-eu-west-1.amazonaws.com/softwaremill-public/elasticmq-server-0.13.8.jar'
2927
URL_LOCALSTACK_FAT_JAR = ('http://central.maven.org/maven2/' +
3028
'cloud/localstack/localstack-utils/{v}/localstack-utils-{v}-fat.jar').format(v=LOCALSTACK_MAVEN_VERSION)
3129

@@ -52,7 +50,7 @@ def install_elasticmq():
5250
run('mkdir -p %s' % INSTALL_DIR_ELASTICMQ)
5351
# download archive
5452
if not os.path.exists(TMP_ARCHIVE_ELASTICMQ):
55-
download(URL_ELASTICMQ_JAR, TMP_ARCHIVE_ELASTICMQ)
53+
download(ELASTICMQ_JAR_URL, TMP_ARCHIVE_ELASTICMQ)
5654
shutil.copy(TMP_ARCHIVE_ELASTICMQ, INSTALL_DIR_ELASTICMQ)
5755

5856

@@ -90,7 +88,7 @@ def install_amazon_kinesis_client_libs():
9088
if not os.path.exists(INSTALL_DIR_KCL):
9189
mkdir(INSTALL_DIR_KCL)
9290
if not os.path.exists(TMP_ARCHIVE_STS):
93-
download(URL_STS_JAR, TMP_ARCHIVE_STS)
91+
download(STS_JAR_URL, TMP_ARCHIVE_STS)
9492
shutil.copy(TMP_ARCHIVE_STS, INSTALL_DIR_KCL)
9593
# Compile Java files
9694
from localstack.utils.kinesis import kclipy_helper

0 commit comments

Comments
 (0)