Make sure the ```docker``` and ```docker-compose``` commands are installed on your system, and that the Docker Engine is running. Docker Desktop for Mac/Windows (>=2.5.0.1) includes these tools and they are also available for various POSIX systems. Ensure that ```docker-compose version``` indicates at least version 1.25.4, and that ```docker version``` indicates Engine version at least 19.03.5 and does not report any connection errors to Docker Engine. Connection errors may indicate a need to start the engine.
### Fork the PeeringDB repository, Clone it, Set upstream
Your development and experimentation with the PeeringDB code base should take place in a [fork of the project](https://docs.github.com/en/free-pro-team@latest/github/getting-started-with-github/fork-a-repo). When you have improvements or fixes to share, you will be able to point other developers to your code, or submit a pull request.
Navigate to [https://github.com/peeringdb/peeringdb](https://github.com/peeringdb/peeringdb).
In the top-right corner of the page, click **Fork**.
On GitHub, navigate to *your* fork of the PeeringDB repository.
Above the list of files, click **Code**. Copy the HTTPS URL. It will be something like: ```https://github.com/YOUR-USERNAME/peeringdb.git```
Keep your fork up-to-date with the upstream repository: [https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/syncing-a-fork](https://docs.github.com/en/free-pro-team@latest/github/collaborating-with-issues-and-pull-requests/syncing-a-fork)
```sh
git fetch upstream
git checkout master # or other branch you are working on
On some docker versions `build` can fail with a `ERROR: Service 'peeringdb' failed to build: failed to export image: failed to create image: failed to get layer` error. Simply
-`PDB_NO_MIGRATE`: If set to anything, will skip migrations when running the `uwsgi` command, otherwise, migrations will always be applied first thing while running `uwsgi`.
After testing and carefully code-reviewing your changes, commit and push them to your repository. You can then share the changes with other developers, such as those on the <pdb-tech@lists.peeringdb.com> mailing list: [https://lists.peeringdb.com/cgi-bin/mailman/listinfo/pdb-tech](https://lists.peeringdb.com/cgi-bin/mailman/listinfo/pdb-tech)
When ready to contribute the change to the project, create a pull request to the main repository along with a description of your goals for the change and/or what you are fixing.