Docker compose/WordPress/PhpMyAdmin

Com o Docker compose é possível criar vários containers de uma só vez de acordo com as necessidades da sua aplicação, com o compose é possível criar a infraestrutura inteira da sua aplicação com um único arquivo. Isso é possível utilizando um arquivo no formato YAML (docker-compose.yml) indicando nesse arquivo as instruções necessárias para a criação do nosso cluster de containers, e as images que vamos utilizar, os volumes, as variáveis, as portas que vamos expor e etc.

Exemplos:

WordPress

Vamos criar a estrutura para o wordpress:

[root@notebook docker]# mkdir wordpress 

[root@notebook docker]# cd wordpress/

E criamos nosso compose file:

[root@notebook wordpress]# touch docker-compose.yml
 version: '2'

 services:
         db:        
           image: mysql
           restart: always
           expose:
            - 3306
           environment:
                MYSQL_ROOT_PASSWORD: teste123
                MYSQL_USER: wordpress
                MYSQL_PASSWORD: wordpress
                MYSQL_DATABASE: wordpress

         wordpress:
           image: wordpress
           restart: always
           ports:
            - 8080:80
           environment:
                WORDPRESS_DB_HOST: mysql
                WORDPRESS_DB_USER: wordpress
                WORDPRESS_DB_PASSWORD: wordpress
           links:
            - db:mysql

Executamos:

[root@notebook wordpress]# docker-compose up -d 
Starting wordpress_mysql_1 ... done
Starting wordpress_wordpress_1 ... done

Verificamos:

[root@notebook wordpress]# docker-compose ps 
        Name                       Command               State          Ports         
-------------------------------------------------------------------------------------
wordpress_mysql_1       docker-entrypoint.sh mysqld      Up      3306/tcp             
wordpress_wordpress_1   docker-entrypoint.sh apach ...   Up      0.0.0.0:8080->80/tcp 

Agora é só acessar nosso Browser e acessar “localhost:8080” e prosseguir com a instalação.

phpMyAdmin

Um outro exemplo de docker-compose bem legal pra ilustrar a funcionalidade do docker-compose é integrando um container de banco MySQL com o phpMyAdmin.

Vamos lá:

[root@notebook docker]# mkdir phpmyadmin 

[root@notebook docker]# cd phpmyadmin/

E criamos nosso docker-compose:

[root@notebook phpmyadmin]# touch docker-compose.yml 

E inserimos o seguinte conteúdo:

 version: '2'

 services:
         db:        
           image: "mysql:latest"
           restart: always
           expose:
            - 3306
           environment:
                MYSQL_ROOT_PASSWORD: teste123
         phpmyadmin:
           image: "phpmyadmin/phpmyadmin"
           restart: always
           ports:
            - 8080:80
           environment:
                MYSQL_USERNAME: root
                MYSQL_ROOT_PASSWORD: teste123
                PMA_HOST: mysql
           links:
            - db:mysql

Startamos:

[root@notebook phpmyadmin]# docker-compose up -d 
Creating phpmyadmin_db_1
Creating phpmyadmin_phpmyadmin_1

Verificamos:

[root@notebook phpmyadmin]# docker-compose ps
         Name                       Command             State          Ports         
------------------------------------------------------------------------------------
phpmyadmin_db_1           docker-entrypoint.sh mysqld   Up      3306/tcp             
phpmyadmin_phpmyadmin_1   /run.sh phpmyadmin            Up      0.0.0.0:8080->80/tcp 

Acessamos nosso Browser “localhost:8080” e voilá:

É possível verificar os logs do nosso docker-compose utilizando o seguinte comando:

[root@notebook phpmyadmin]# docker-compose logs -f 

CONCLUSÃO:
Estes foram dois exemplos simples de como utilizar o docker-compose, ao longo dos meus estudos tentarei subir aplicações mais complexas utilizando o compose versão 3, linkando diversos containers, utilizando networks, volumes, replicação e etc.

Referência:
https://hub.docker.com/_/wordpress/
https://hub.docker.com/r/phpmyadmin/phpmyadmin/