Docker: Dockerfile vs docker-compose.yml

I have a Dockerfile as the following:

FROM docker/whalesay:latest
RUN apt-get update && apt-get install -y fortunes
CMD while true; do /usr/games/fortune -a | cowsay; sleep 2; done

I have built the above Dockerfile as image: docker-whale

  • Docker build Input/Output error
  • Automation of docker pull via scala
  • Set execution timeout limit while creating docker
  • Error in gdata::installXLSXsupport() on Docker Centos 7
  • Running and debugging an ASP.NET Core RC2 application in Docker
  • docker info registry showing v1 and in docker run getting v2
  • I want to write a docker-compose.yml for the above image. My understanding is that you can run multiple containers with docker-compose.

    So if i want to run 5 images of docker-whale, how does docker-compose.yml looks like?

  • Docker connection refused when started with -ti bash
  • Ansible docker_container 'no Host in request URL', docker pull works correctly
  • python variable not being passed?
  • Why am I unable to access my node.js app within a docker container?
  • Run two processes in a single docker container or two containers connecting to the same DB?
  • SSH in Docker container causes HTTP 404
  • 3 Solutions collect form web for “Docker: Dockerfile vs docker-compose.yml”

    You could put this docker-compose.yaml next to your Dockerfile:

    version: '2'
    services:
      docker-whale:
        image: docker-whale
        build: .
    

    And then execute the following commands:

    # build docker image
    docker-compose build
    
    # bring up one docker container
    docker-compose up -d
    
    # scale up to three containers
    docker-compose scale docker-whale=3
    
    # overview about these containers
    docker-compose ps
    
    # view combined logs of all containers
    # use <ctrl-c> to stop viewing
    docker-compose logs --follow
    
    # take down all containers
    docker-compose down
    

    I assume you want to run 5 containers of docker-whale and not 5 images .

    In your case compose.yml will not have information about number of containers. You need to use scale command

    docker-compose scale <service-name>=5
    

    docker-compose.yml

    docker-whale:
      image: docker-whale
    

    Then inside same folder run:

    docker-compose up -d
    docker-compose scale docker-whale=5
    

    This assumes your application is scale-aware, but you still can write 5 entries in docker-compose.yml, this is screwdriver but sometimes useful:

    docker-whale-1:
      image: docker-whale
    
    docker-whale-2:
      image: docker-whale
    
    docker-whale-3:
      image: docker-whale
    
    docker-whale-4:
      image: docker-whale
    
    docker-whale-5:
      image: docker-whale
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.