Há diversas maneiras de resolver este problema. Eu resolvi criar este tutorial com a técnica que eu utilizo para disponibilizar o acesso remoto dentro de um ambiente dockerizado via SSH. Para uma manutenção rápida ou até mesma para liberar o...

Há diversas maneiras de resolver este problema. Eu resolvi criar este tutorial com a técnica que eu utilizo para disponibilizar o acesso remoto dentro de um ambiente dockerizado via SSH.

Para uma manutenção rápida ou até mesma para liberar o acesso para um cliente dentro do seu ambiente o OpenSSH é a melhor opção.
Estou considerando que você já tenha o Docker instalado e configurado em seu ambiente. Vou exemplificar o cenário que eu tive que resolver por aqui e acredito que isto irá ajudar outros devs com a mesma dúvida.

Cenário
- Vamos imaginar que temos um ambiente Wordpress e o cliente precisa do acesso shell na máquina para fazer as devidas manutenções e até mesmo configurar um cronjob na máquina.

Instalação

Primeiramente você deve baixar a imagem do Docker com o OpenSSH. Eu deixei uma imagem pronta para você utilizar é só fazer o pull

docker pull jaccon/openssh:latest

Com o comando acima você irá baixar a imagem Docker do OpenSSH para seu ambiente, vamos partir para configurar o nosso Docker Compose.

Perceba que no exemplo abaixo nós já temos um ambiente com um Wordpress/PHP, MySQL, phpMyAdmin e agora vamos iniciar o OpenSSH dentro do container.

version: '2'

services:
  app_db:
    image: mysql:5.7
    container_name: app_db
    ports:
      - "8010:3306"
    volumes:
      - ./database/data:/var/lib/mysql
      - ./database/initdb.d:/docker-entrypoint-initdb.d
      - ./etc/mysql/mysqld.cnf:/etc/mysql/mysql.conf.d/mysqld.cnf
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: P@sswd@12345678 # any random string will do
      MYSQL_DATABASE: wordpress # the name of your mysql database
      MYSQL_USER: wordpress # the name of the database user
      MYSQL_PASSWORD: tvFJHsQ2yhQDyrTp # the password of the mysql user

  app_website:
    depends_on:
      - app_db
    image:  wordpress:latest # we're using the image with php7.1 
    container_name: app_website
    ports:
      - "8011:80"
    restart: always
    links:
      - app_db:mysql
    volumes:
      - ./src:/var/www/html
      - ./logs:/var/log/apache2/
      - ./scripts/:/scripts/
      - ./etc/php/php.ini:/usr/local/etc/php/php.ini

  app_ssh:
    image: jaccon/openssh  
    container_name: app_ssh
    ports:
      - "8012:22"
    restart: always
    links:
      - app_db:mysql
    volumes:
      - ./src:/var/www/html
      - ./logs:/var/log/apache2/
      - ./scripts/:/scripts/
      - ./etc/php/php.ini:/usr/local/etc/php/php.ini
      - ./etc/passwd:/etc/passwd
      - ./etc/ssh:/etc/ssh
 
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: app_phpmyadmin
    volumes:
      - ./phpmyadmin/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
    links:
      - app_db
    ports:
      - "8013:80"
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=app_db

Veja que nós temos uma entrada app_ssh. É ai que iremos configurar dentro do ambiente op OpenSSH que dará acesso ao conteúdo Dockerizado do servidor Apache onde está rodando o Wordpress.

Em resumo nós teremos a entrada no nosso docker-compose.yml que seria:

 app_ssh:
    image: jaccon/openssh  
    container_name: app_ssh
    ports:
      - "8012:22"
    restart: always
       volumes:
      - ./src:/var/www/html
      - ./logs:/var/log/apache2/
      - ./scripts/:/scripts/
      - ./etc/php/php.ini:/usr/local/etc/php/php.ini
      - ./etc/passwd:/etc/passwd
      - ./etc/ssh:/etc/ssh

Depois de iniciar o container pode ser que você tenha que iniciar o openssh e setar a senha do seu usuário. Isto é simples basta executar os comandos abaixo

docker exec -it app_ssh /bin/bash
echo root:P@sswd |chpasswd
/etc/init.d/ssh start

Feito isto o seu servidor SSH já estará configurado. Para acessar basta digitar o endereço ip do seu ambiente e depois adicionar a porta 8012 que foi a porta que foi mapeada para o OpenSSH

ssh [email protected] -p 8012

O comando acima é um exemplo de conexão no qual no exemplo o endereço do ambiente é 192.168.0.1

Se você tiver alguma dúvida utilize os comentários para entrar em contato

Obrigado!

Seja Membro Gratuítamente

Assine a newsletter para receber em seu email as publicações atualizadas neste blog

Top