# Quay - container image registry `master` branch build status: ![Docker Repository on Quay](https://quay.io/repository/quay/quay/status?token=7bffbc13-8bb0-4fb4-8a70-684a0cf485d3 "Docker Repository on Quay") Quay is a container image registry with managements APIs, a Docker registry API, a container build system. The application is implemented as a set of API endpoints written in python and an Angular.js frontend. ## Setup Development Environment If you are doing local development on your workstation against the code base follow these instructions. ### Docker Quay and its parts can run inside of docker containers. This method requires no installation of any python packages on your host machine. The `local-docker.sh` script is provided to prepare and run parts of quay. First, start redis: ``` docker run -d -p 6379:6379 redis ``` And clone the configuration repo: ``` git clone git@github.com:coreos-inc/quay-config.git ../quay-config ln -s ../../quay-config/local conf/stack ``` To build and run a docker container, pass one argument to local-docker.sh: - `dev`: run quay on port 5000 - `buildman`: run the buildmanager - `notifications`: run the notification worker - `test`: run the unit tests - `initdb`: clear and initialize the test database For example: ``` ./local-docker.sh dev ```` will start quay in a docker container. Now quay will be running on: http://127.0.0.1:5000 The username is `devtable` and the password is `password`. ### OS X ``` git clone git@github.com:coreos-inc/quay.git cd quay ./contrib/osx/local-setup.sh ``` Now run the server; it will use sqlite as the SQL server. ``` ./local-run.sh ``` Now quay will be running on: http://127.0.0.1:5000 The username is `devtable` and the password is `password`. Some packages may fail to build with clang (which now defaults to C11). They can be installed with C99 with: ``` CFLAGS='-std=c99' pip install --no-cache --no-binary :all: gevent CFLAGS='-std=c99' pip install --no-cache --no-binary :all: cffi CFLAGS='-std=c99' pip install --no-cache --no-binary :all: cryptography ``` ## Update Requirements 1. Create a new virtualenv 2. Activate new virtualenv 3. Install unversioned dependencies 4. Run tests 5. Freeze requirements 6. Deactivate virtualenv 7. Remove virtualenv Example (commands may differ dependending on virtualenv tools): ``` pyenv virtualenv 2.7.11 quay-deps pyenv activate quay-deps pip install -r requirements-nover.txt ./local-test.sh pip freeze > requirements.txt pyenv deactivate quay-deps pyenv uninstall quay-deps ```