df3daacb8c
to commits
95 lines
2.5 KiB
Markdown
95 lines
2.5 KiB
Markdown
# 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
|
|
```
|