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

  • Why Docker/Containers has it's own networking concept(CNM/CNI) instead of using VM networking?
  • Docker how to start container with defined nameservers in /etc/resolv.conf
  • Connect to MySQL Server inside Docker container in an Microsoft Azure VM
  • ENV[“VARIABLE”].encoding return #<Encoding:ASCII-8BIT> on production when being assigned a unicode string
  • How to mount a Google cloud disk with Docker-machine / docker-compose
  • How to Set Capabilities on Node Browser with selenium Docker
  • 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?

  • Making two Docker containers work together
  • Docker swarm mode mesh routing is not working at all
  • Symfony2 app slow response on MacOS & Boot2Docker
  • Run the image for Docker no see results
  • Docker, How can I locate the image files after pulling [duplicate]
  • Docker swarm on physical machines without docker-machine
  • One Solution collect form web for “Prevent skip in docker-compose”

    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
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.