# Herramientas

Para levantar los contenedores deberemos tener instalado en nuestra máquina:

* Docker
* docker-compose&#x20;

**Docker**: Es la propia herramienta de Docker que se encarga de todo.

**docker-compose**: Es una herramienta que nos ayuda a levantar los contenedores y es la que usaremos para ello.

## docker-compose

Como comentamos anteriormente docker nos proporcionará los servicios en distintos contenedores. Con **docker-compose** podremos levantar todos los contenedores con un simple comando:

```
docker-compose up -d
```

Será así de simple levantar un entorno de desarrollo.

Docker-compose se ejecuta con un comando sobre el archivo  llamado `docker-compose.yml`

Aunque no es relevante para el desarrollador, es un archivo donde se configuran los contenedores. Tiene el siguiente aspecto...

```
version: '3'
services:
  db:
    container_name: my-app-db
    image: mariadb
    volumes:
       - "$PWD/data:/var/lib/mysql"
    environment:
       MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
       MYSQL_DATABASE: "${MYSQL_DATABASE}"
       MYSQL_USER: "${MYSQL_USER}"
       MYSQL_PASSWORD: "${MYSQL_PASSWORD}"
    ports:
      - "${PORT_DB}:3306"
    expose:
      - "${PORT_DB}"
    networks:
      - net_my-app
    restart: on-failure

  phpmyadminmy-app:
    container_name: my-app-phpmyadmin
    image: phpmyadmin/phpmyadmin
    environment:
      MYSQL_ROOT_PASSWORD: "${MYSQL_ROOT_PASSWORD}"
      MYSQL_USER: "${MYSQL_USER}"
      MYSQL_PASSWOR: "${MYSQL_PASSWORD}"
      PMA_ARBITRARY: 1
      PMA_HOST: db
    networks:
      - net_my-app
    depends_on:
      - db
    ports:
      - "${PORT_PHPMYADMIN}:80"
    volumes:
      - ./sessions:/sessions/
    links:
      - db

  phpmy-app:
    build: ./php/
    volumes:
      - "$PWD/apache:/etc/apache2/sites-available/"
      - "$PWD/my-app/:/var/www/html"
    expose:
      - ${PORT_SYMFONY}
    ports:
      - ${PORT_SYMFONY}:80
    networks:
      - net_my-app

networks:
  net_my-app:

```

Sin entrar en mucho detalle, se puede ver como hay 3 servicios, llamados: **db**, **phpmyadmin** y **phpmy-app**

## Dockers UI

Existen varios UI para gestionar los contendores de forma visual, he probado **Portainer** y parece muy intuitivo...

![](https://127395752-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LuwD4v61VPjgy3dvloq%2F-Lv6XOOWllvQgZ1G_yOh%2F-Lv6XujUDwFkoit4CXcc%2Fportainer.png?alt=media\&token=a0ec9dd0-9345-4a31-9295-06ecb337d674)

Para instalarlo usa el comando ...

```
docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

```

Podrás acceder a el mediante ... `http://localhost:9000`&#x20;

Existen otros puedes encontrar el que más te guste en esta url...

<https://blog.codeship.com/docker-guis/>
