1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677 |
- FROM debian:jessie
- ENV PYTHONIOENCODING UTF-8
- # Pypy is installed from a package manager because it takes so long to build.
- RUN apt-get update && apt-get install -y \
- build-essential \
- curl \
- git \
- libbz2-dev \
- libcurl4-openssl-dev \
- libmemcached-dev \
- libncurses5-dev \
- libreadline-dev \
- libsqlite3-dev \
- libssl-dev \
- pkg-config \
- pypy \
- wget \
- zlib1g-dev
- # Setup variables. Even though changing these may cause unnecessary invalidation of
- # unrelated elements, grouping them together makes the Dockerfile read better.
- ENV PROVISIONING /provisioning
- ARG CELERY_USER=developer
- # Check for mandatory build arguments
- RUN : "${CELERY_USER:?CELERY_USER build argument needs to be set and non-empty.}"
- ENV HOME /home/$CELERY_USER
- ENV PATH="$HOME/.pyenv/bin:$PATH"
- # Copy and run setup scripts
- WORKDIR $PROVISIONING
- COPY docker/scripts/install-couchbase.sh .
- # Scripts will lose thier executable flags on copy. To avoid the extra instructions
- # we call the shell directly.
- RUN sh install-couchbase.sh
- COPY docker/scripts/create-linux-user.sh .
- RUN sh create-linux-user.sh
- # Swap to the celery user so packages and celery are not installed as root.
- USER $CELERY_USER
- COPY docker/scripts/install-pyenv.sh .
- RUN sh install-pyenv.sh
- # Install celery
- WORKDIR $HOME
- COPY --chown=1000:1000 requirements $HOME/requirements
- COPY --chown=1000:1000 docker/entrypoint /entrypoint
- RUN chmod gu+x /entrypoint
- # Define the local pyenvs
- RUN pyenv local python2.7 python3.4 python3.5 python3.6
- # Setup one celery environment for basic development use
- RUN pyenv exec pip install \
- -r requirements/default.txt \
- -r requirements/docs.txt \
- -r requirements/pkgutils.txt \
- -r requirements/test.txt \
- -r requirements/test-ci-base.txt \
- -r requirements/test-integration.txt
- COPY --chown=1000:1000 MANIFEST.in Makefile setup.py setup.cfg tox.ini $HOME/
- COPY --chown=1000:1000 docs $HOME/docs
- COPY --chown=1000:1000 t $HOME/t
- COPY --chown=1000:1000 celery $HOME/celery
- RUN pyenv exec pip install -e .
- # Setup the entrypoint, this ensures pyenv is initialized when a container is started
- # and that any compiled files from earlier steps or from moutns are removed to avoid
- # py.test failing with an ImportMismatchError
- ENTRYPOINT ["/entrypoint"]
|