Improve the workflow for generating binaries for Heroku-16 (#387)

* Updates bob-builder to a version that clears out the previous
  build directory, which prevents the stale files seen in #379.
* Adds a `buildenv-heroku-16` Make command to simplify the
  building and use of the Heroku-16 binary build environment.
* Sets `S3_BUCKET` and `S3_PREFIX` in the Docker image, to save
  having to do so manually each time.
* Removes the duplication of the bob-builder dependency between
  `Dockerfile` and `requirements.txt`.
* Disables the pip version check during Docker build, to avoid the
  noisy stderr warning about Ubuntu 16.04 pip being older (v8.1.1).
* Adds a `.dockerignore` to speed up the Docker build, by reducing
  the build context transferred to the daemon from 60MB to 2MB.
* Applies some Dockerfile best practices like disabling/removing
  cached files (since layer invalidation makes caching pointless).
This commit is contained in:
Ed Morley
2017-05-25 19:55:57 +01:00
committed by Kenneth Reitz
parent 7a579e4eb7
commit e621ff4d5e
5 changed files with 35 additions and 8 deletions
+1
View File
@@ -0,0 +1 @@
.git/
+7 -5
View File
@@ -1,11 +1,13 @@
FROM heroku/heroku:16-build
WORKDIR /app
ENV WORKSPACE_DIR=/app/builds
ENV WORKSPACE_DIR="/app/builds" \
S3_BUCKET="lang-python" \
S3_PREFIX="heroku-16/"
RUN apt-get update && apt-get install -y python-pip
RUN apt-get update && apt-get install -y python-pip && rm -rf /var/lib/apt/lists/*
# Install bob-builder application
RUN pip install bob-builder==0.0.5
COPY requirements.txt /app/
RUN pip install --disable-pip-version-check --no-cache-dir -r /app/requirements.txt
COPY . /app
COPY . /app
+14 -1
View File
@@ -13,7 +13,20 @@ test-heroku-16:
@docker run -v $(shell pwd):/buildpack:ro --rm -it -e "STACK=heroku-16" heroku/heroku:16-build bash -c 'cp -r /buildpack /buildpack_test; cd /buildpack_test/; test/run;'
@echo ""
buildenv-heroku-16:
@echo "Creating build environment (heroku-16)..."
@echo
@docker build --pull -t python-buildenv-heroku-16 .
@echo
@echo "Usage..."
@echo
@echo " $$ export AWS_ACCESS_KEY_ID=foo AWS_SECRET_ACCESS_KEY=bar # Optional unless deploying"
@echo " $$ bob build runtimes/python-2.7.13"
@echo " $$ bob deploy runtimes/python-2.7.13"
@echo
@docker run -it --rm python-buildenv-heroku-16
tools:
git clone https://github.com/kennethreitz/pip-pop.git
mv pip-pop/bin/* vendor/pip-pop/
rm -fr pip-pop
rm -fr pip-pop
+11 -1
View File
@@ -1,5 +1,7 @@
# Python Buildpack Binaries
For Cedar-14 stack
------------------
To get started with it, create an app on Heroku inside a clone of this repository, and set your S3 config vars:
@@ -28,4 +30,12 @@ If this works, run `bob deploy` instead of `bob build` to have the result upload
To speed things up drastically, it'll usually be a good idea to `heroku run bash --size PX` instead.
Enjoy :)
For Heroku-16 stack
-------------------
1. Ensure GNU Make and Docker are installed.
2. From the root of the buildpack repository, run: `make buildenv-heroku-16`
3. Follow the instructions displayed!
Enjoy :)
+2 -1
View File
@@ -1 +1,2 @@
bob-builder==0.0.5
# TODO: Replace this once the bob-builder changes on master are released:
https://github.com/kennethreitz/bob-builder/archive/54211376a8fb49c67ecbd6798bd45b55f4d125f4.zip