Requisitos:
Para seguir este artigo, você deve ter o Docker instalado no seu computador. LinuxHint tem muitos artigos que você pode seguir para instalar o Docker na distribuição Linux desejada, se ainda não o tiver instalado. Portanto, certifique-se de verificar LinuxHint.com caso você esteja tendo problemas para instalar o Docker.
Instalando o Docker Compose:
Você pode baixar o arquivo binário do Docker Compose facilmente com o seguinte comando:
$ sudo curl -L "https: // github.com / docker / compose / releases / download / 1.24.1 /docker-compose - $ (uname -s) - $ (uname -m) "-o / usr / local / bin / docker-compose
NOTA: ondulação pode não estar instalado na sua distribuição Linux. Se for esse o caso, você pode instalar o curl com o seguinte comando:
Ubuntu / Debian / Linux Mint:
$ sudo apt install curl -yCentOS / RHEL / Fedora:
$ sudo dnf install curl -yUma vez docker-compose arquivo binário é baixado, execute o seguinte comando:
$ sudo chmod + x / usr / local / bin / docker-compose
Agora, verifique se docker-compose comando está funcionando da seguinte maneira:
versão $ docker-composeDeve imprimir as informações da versão conforme mostrado na imagem abaixo.
Configurando o Docker Compose para o projeto:
Agora, crie um diretório de projeto ~ / docker / lamp (digamos) e um html / diretório dentro do diretório do projeto para manter os arquivos do site (i.e. php, html, css, js etc.) do seguinte modo:
$ mkdir -p ~ / docker / lamp / html
Agora, navegue até o diretório do projeto ~ / docker / lamp do seguinte modo:
$ cd ~ / docker / lamp
Criar uma php.Dockerfile no diretório do projeto ~ / docker / lamp. Este é um Dockerfile que habilita as extensões mysqli e PDO php no php: 7.4.3-apache imagem do Docker Hub e cria uma imagem Docker personalizada a partir dele.
O conteúdo do php.Dockerfile é dado abaixo.
DE php: 7.4.3-apacheCORRE
docker-php-ext-install mysqli pdo pdo_mysql
Agora, crie um docker-compose.yaml arquivo no diretório do projeto ~ / docker / lamp e digite as seguintes linhas no docker-compose.yaml Arquivo.
versão: "3.7 "Serviços:
servidor web:
construir:
dockerfile: php.Dockerfile
contexto: .
reiniciar: sempre
volumes:
- "./ html /: / var / www / html / "
portas:
- "8080: 80"
servidor mysql:
imagem: mysql: 8.0.19
reiniciar: sempre
meio Ambiente:
MYSQL_ROOT_PASSWORD: segredo
volumes:
- mysql-data: / var / lib / mysql
phpmyadmin:
imagem: phpmyadmin / phpmyadmin: 5.0.1
reiniciar: sempre
meio Ambiente:
PMA_HOST: mysql-server
PMA_USER: root
PMA_PASSWORD: segredo
portas:
- "5000: 80"
volumes:
mysql-data:
O docker-compose.yaml o arquivo deve ser o seguinte.
Aqui, criei 3 serviços servidor web, servidor mysql e phpmyadmin.
servidor web serviço irá executar uma imagem Docker personalizada, conforme definido em php.Dockerfile.
servidor mysql serviço irá executar o mysql: 8.0.19 imagem (do DockerHub) em um contêiner do Docker.
phpmyadmin serviço irá executar o phpmyadmin / phpmyadmin: 5.0.1 imagem (do DockerHub) em outro contêiner do Docker.
Dentro servidor mysql serviço, o MYSQL_ROOT_PASSWORD variável de ambiente é usada para definir o raiz senha do MySQL.
Dentro phpmyadmin serviço, o PMA_HOST, PMA_USER, PMA_PASSWORD variáveis de ambiente são usadas para definir o nome de host MySQL, nome de usuário e senha respectivamente que o phpMyAdmin usará para se conectar ao servidor de banco de dados MySQL rodando servidor mysql serviço.
Dentro servidor mysql serviço, todo o conteúdo do / var / lib / mysql diretório será salvo permanentemente no mysql-data volume.'
No servidor web serviço, o porto de contêineres 80 (direita) é mapeado para a porta do host Docker 8080 (deixou).'
No phpmyadmin serviço, o porto de contêineres 5000 (direita) é mapeado para a porta do host Docker 80 (deixou).
Além disso, crie um índice.php arquivo no html / diretório para testar o servidor LAMP.
O conteúdo do índice.php arquivo no meu caso,
$ host = "mysql-server";$ user = "root";
$ pass = "segredo";
$ db = "app1";
tentar
$ conn = new PDO ("mysql: host = $ host; dbname = $ db", $ user, $ pass);
$ conn-> setAttribute (PDO :: ATTR_ERRMODE, PDO :: ERRMODE_EXCEPTION);
echo "Conectado com sucesso";
catch (PDOException $ e)
echo "Conexão falhou:" . $ e-> getMessage ();
?>
Finalmente, o diretório do projeto ~ / docker / lamp deve ser o seguinte:
Iniciando o servidor LAMP:
Agora, para começar o servidor web, servidor mysql e phpmyadmin serviços, execute o seguinte comando:
$ docker-compose up -d
Todos os serviços devem começar em segundo plano.
Para ver como as portas são mapeadas, execute o seguinte comando:
$ docker-compose psComo você pode ver, para o servidor web serviço, a porta do host Docker 8080 é mapeado para a porta TCP do contêiner 80.
Para o phpmyadmin serviço, a porta do host Docker 5000 é mapeado para a porta TCP do contêiner 80.
Encontrar o endereço IP do Docker Host:
Se você deseja acessar o servidor LAMP de outros computadores em sua rede, você deve saber o endereço IP do seu host Docker.
Para encontrar o endereço IP do seu host Docker, execute o seguinte comando:
$ ipNo meu caso, o endereço IP do meu host Docker 192.168.20.160. Será diferente para você. Portanto, certifique-se de substituí-lo pelo seu a partir de agora.
Testando o servidor LAMP:
Agora, você pode acessar o phpMyAdmin 5 e o servidor da web de um navegador da web.
Para acessar o phpMyAdmin 5, abra um navegador da web e visite http: // localhost: 5000 do seu host Docker ou visite http: // 192.168.20.160: 5000 de qualquer outro computador na rede.
phpMyAdmin 5 deve carregar em seu navegador da web.
Agora, crie um app1 Banco de dados MySQL de phpMyAdmin.
Agora, visite http: // localhost: 8080 do seu host Docker ou http: // 192.168.20.160: 8080 de qualquer outro computador em sua rede para acessar o servidor da web.
Você deveria ver o Conectado com sucesso mensagem. Isso significa que o PHP está funcionando e o servidor de banco de dados MySQL está acessível a partir do servidor web recipiente. Então, tecnicamente, o servidor LAMP é totalmente funcional.
Parando o servidor LAMP:
Para parar o servidor web, servidor mysql e phpmyadmin serviços, execute o seguinte comando:
$ docker-compose down
O servidor web, servidor mysql e phpmyadmin serviços devem ser interrompidos.
Limpando os dados do servidor MySQL:
Se você deseja remover todos os dados e configurações do banco de dados MySQL, você deve remover o mysql-data volume.
Você pode encontrar o nome real do volume com o seguinte comando:
$ docker volume ls
Você pode remover o volume lamp_mysql-data com o seguinte comando:
$ docker volume rm lamp_mysql-data
Então, é assim que você configura um servidor LAMP com Docker. Obrigado por ler este artigo.
Como você pode ver, o volume a ser removido é lamp_mysql-data.