Docker-composeΒΆ

Installation:

# https://docs.docker.com/compose/install/

# Docker
sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install docker-ce
sudo usermod -aG docker $USER

# Docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

Bash completion (https://docs.docker.com/compose/completion/):

curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
docker-compose up -d        # start sevices
                           stop
                           stop <service_name>
                           run <service_name> <command>
                           exec <service_name> <command>    # -ti auto
                           -p <project_name>        # name of project
                           --force-recreate         # recreate containers
                           down                                     # stop and delete containers and network_default
                                        --rmi all           # + del all service images

Logging:

logging:
driver: "json-file"
options:
    max-size: "100M"
    max-file: "5"
version: '2.1'
services:
  nginx1:
    env_file: .env

Example nginx docker-compose.yml:

version: '2'
services:
  nginx1:
    image: nginx
    ports:
     - "81:80"
    external_links:
     - redis_1
     - project_db_1:mysql
     - project_db_1:postgresql
    tty: true

Example app with postgres:

version: '2'
services:
  app:
    build: .
    container_name: hydrareports
    image: hydrareports
    ports:
     - "80:80"
    restart: always
    depends_on:
     - postgres
    volumes:
     - ./.env:/var/www/html/.env

  postgres:
    image: postgres
    container_name: hydrareports_postgres
    volumes:
     - ./.data/db:/var/lib/postgresql/data
    restart: always
    environment:
     - TZ=Europe/Kiev
     - POSTGRES_PASSWORD=${DATASOURCES_PASSWORD}
     - POSTGRES_USER=${DATASOURCES_USERNAME}
     - POSTGRES_DB=${DATASOURCES_DB}