Dockerized PostgreSQL and Django for Local Development
Docker and docker-compose make it dead simple to avoid dependency hell and have a consistent environment for your whole team while doing local development. This post walks through setting up a new Django project from scratch to use Docker and docker-compose. It is modeled after a previous post that I wrote about doing a similar thing with Laravel and MySQL.
Dockerfile
Nothing too interesting happening here. Installing python and pip.FROM ubuntu:16.04system update
RUN apt update RUN apt upgrade -y
python deps
RUN apt install -y python3-dev python3-pip
docker-compose.yml
version: '2' services: app: build: . ports: - "8000:8000" volumes: - .:/app working_dir: /app command: bash -c "pip3 install -r requirements.txt && python3 manage.py migrate && python3 manage.py runserver 0:8000" depends_on: - db db: image: postgres:9.6.5-alpine environment: - POSTGRES_USER=feedread - POSTGRES_PASSWORD=feedread volumes: - ./data:/var/lib/postgresql/data ports: - "5432:5432"
docker-compose up
. Each time the app starts it will install the latest dependencies, run migrations, and start serving the app on localhost:8000
Notes
- In order to do stuff with the database locally you should add the following record to your local /etc/hosts file
# /etc/hosts
127.0.0.1 db
- Since we define -
.:/app
as a volume, this means that all of your local changes are immediately visible in the dockerized app. - If you need to access the running app or db container you can do so with
docker-compose exec app bash
ordocker-compose exec db bash
. - This docker-compose file is not really suitable for production since it is not likely that you would want to build the container each time the app starts or automatically run migrations.
- You can add additional services like memcached, a mail server, an app server, a queue, etc., using the same method that we are using above with our database.
Thank you for reading! Share your thoughts with me on bluesky, mastodon, or via email.
Check out some more stuff to read down below.
Most popular posts this month
- 2024
- Reinstalling Windows at 1am
- SQLite DB Migrations with PRAGMA user_version
- My Custom Miniflux CSS Theme
- How to Disable Wayland in Debian Testing
Recent Favorite Blog Posts
This is a collection of the last 8 posts that I bookmarked.
- Sit On Your Ass Web Development from Jim Nielsen’s Blog
- Underused Techniques for Effective Emails from Refactoring English
- Death by a thousand slops from daniel.haxx.se
- The AGI economy is coming faster than you think from Freethink
- Rolling the ladder up behind us from Xe Iaso's blog
- In Praise of “Normal” Engineers from charity.wtf
- Reports of Bluesky's death have been greatly exaggerated from The Torment Nexus
- What Would a Kubernetes 2.0 Look Like from matduggan.com
Articles from blogs I follow around the net
People fall in love with all kinds of things including AI chatbots
OpenAI recently released a new version of its ChatGPT artificial-intelligence engine, called GPT-5. Normally, I wouldn't choose to write about the latest iteration of a product that is in its fifth generation, especially since GPT-5 doesn't seem r…
via The Torment Nexus August 14, 2025Theatre Review: Being Mr Wickham ★★★★★
Mr Wickham is ready to set the record straight. Celebrating the 250th anniversary of Jane Austen’s birth, Adrian Lukis, who starred in the renowned BBC TV adaptation of Pride and Prejudice, returns to the role of Mr Wickham. Join Pride and Prejudice’s mo…
via Terence Eden’s Blog August 14, 2025The Library
Rose’s favorite daddy-daughter dates are at the libraries. We try to go once or twice a week. To play. To build in the sensory room. To look at all the Amiibos near the front entrance. To use the elevator. To walk around. To observe. To think. To have a…
via nashp.com August 14, 2025Generated by openring