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 mastodon or via email.
Check out some more stuff to read down below.
Most popular posts this month
- Dagger Feels Like Magic
- Now What?
- SQLite DB Migrations with PRAGMA user_version
- 20 Years of Ubuntu
- Types and Roles If Not Exists in PostgreSQL
Recent Favorite Blog Posts
This is a collection of the last 8 posts that I bookmarked.
- Sabotage from jwz
- It’s the “1998” of the AI Revolution. So Why Can I Safely Ignore It? from The Internet Review
- University & Adversity from Isaak.net
- War on Malaria from Isaak.net
- Serendipity from Armin Ronacher's Thoughts and Writings
- Andrea Veri: GNOME Infrastructure migration to AWS from Planet GNOME
- A Whale of a Time from https://popagandhi.com/
- Pluralistic: You should be using an RSS reader (16 Oct 2024) from Pluralistic: Daily links from Cory Doctorow
Articles from blogs I follow around the net
MetaWin casino hacked for $4 million
Hot wallets used by the MetaWin crypto casino were drained of around $4 million. According to the company's CEO, the attacker "t[ook] advantage of our frictionless withdrawal system". The attacker then moved the stolen fu…
via Web3 is Going Just Great November 9, 2024Echoes of Time
Wong, et al Light near a black hole can travel different paths to create echoes of a single flash. The most amazing thing about light is that it takes time to travel through space. Because of that one simple fact, when we look up at the Universe we see not …
via Brian Koberlein November 9, 2024New microblog with TILs
I added a new section to this site a couple weeks ago called TIL (“today I learned”). the goal: save interesting tools & facts I posted on social media One kind of thing I like to post on Mastodon/Bluesky is “hey, here’s a cool thing”, like the great SQLi…
via Julia Evans November 9, 2024Generated by openring