Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Prevent skip in docker-compose

I have a docker-compose.yml for a Django web app with a backend. It looks like this:

version: '2'

services:
  db:
    image: # special image
    ports:
      - "1433:1433"
    environment:
      PASSWORD: "*********"

  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"
    depends_on:
      - db

When I run sudo docker-compose build, the first line of output says

db uses an image, skipping. 
Building web.

I need the db image to be built before web.

How can I make the db image get built first?

like image 569
pkshultz Avatar asked Jun 01 '26 22:06

pkshultz


1 Answers

You can start your db container in Detached mode before building web:

$ docker-compose up -d db
$ docker-compose build web

Though, this seems like an anti-pattern. I would recommended that you keep the build process for web as generic as possible, and instead use environment variables or command arguments to accomplish this.

For instance, if you need to pass the same configuration values to both web and db, you could accomplish this using an env_file:

# db_credentials.env
USER="django"
PASSWORD="********"
DATABASE="django_db"

And in your docker-compose.yml file:

services:
  db:
    # ...
    env_file: db_credentials.env

  web:
    # ...
    env_file: db_credentials.env
like image 148
damon Avatar answered Jun 03 '26 17:06

damon



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!