Neste post, vamos criar um ambiente Docker completo com PHP, Apache, PostgreSQL e pgAdmin. Esses componentes são fundamentais para o desenvolvimento web e administração de bancos de dados.
Vamos começar definindo os arquivos necessários: docker-compose.yml
, Dockerfile
, um arquivo de configuração do Apache e um arquivo index.php
para testar a conexão com o banco de dados PostgreSQL.
docker-compose.yml
version: '3'
services:
php:
build: .
ports:
- "80:80"
volumes:
- ./src:/var/www/html
postgres:
image: postgres:latest
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: teste21
POSTGRES_DB: postgres
ports:
- "5432:5432"
pgadmin:
image: dpage/pgadmin4
environment:
PGADMIN_DEFAULT_EMAIL: admin@example.com
PGADMIN_DEFAULT_PASSWORD: teste21
ports:
- "8080:80"
Dockerfile
# Usando a imagem base do PHP com Apache
FROM php:8.3-apache
# Instalando extensões PHP necessárias para o PostgreSQL
RUN apt-get update \
&& apt-get install -y libpq-dev \
&& docker-php-ext-install pdo pdo_pgsql
# Copiando o arquivo de configuração do Apache
COPY apache-config.conf /etc/apache2/sites-available/000-default.conf
# Ativando mod_rewrite do Apache
RUN a2enmod rewrite
# Reiniciando o Apache
RUN service apache2 restart
apache-config.conf (arquivo de configuração do Apache)
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Crie o arquivo index para testar a conexão
Crie um diretório src na raiz e dentro dele crie o arquivo 'index.php'
index.php (para testar a conexão com o banco)
<?php
// Dados de conexão do banco de dados
$dsn = 'pgsql:host=postgres;dbname=postgres;user=postgres;password=teste21';
try {
// Cria uma nova conexão PDO
$pdo = new PDO($dsn);
// Configura o modo de erro do PDO para lançar exceções
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Exibe uma mensagem de sucesso
echo "Conexão bem-sucedida via postgre!";
} catch(PDOException $e) {
// Em caso de erro, exibe a mensagem de erro
die("Erro na conexão: " . $e->getMessage());
}
Agora que temos todos os arquivos necessários, vamos explicar o que cada um faz:
docker-compose.yml: Este arquivo define os serviços que serão executados no ambiente Docker. Ele especifica três serviços: PHP com Apache, PostgreSQL e pgAdmin. Cada serviço possui configurações específicas, incluindo portas mapeadas para acesso externo e variáveis de ambiente para configuração.
Dockerfile: Este arquivo é usado para construir a imagem do contêiner PHP com Apache. Ele instala as extensões necessárias do PHP para trabalhar com o PostgreSQL, copia o arquivo de configuração do Apache e ativa o mod_rewrite.
apache-config.conf: Este é o arquivo de configuração do Apache que define as configurações do servidor. Ele permite a sobreposição de configurações em diretórios específicos e habilita a reescrita de URL.
index.php: Este script PHP tenta se conectar ao PostgreSQL usando as credenciais fornecidas no arquivo
docker-compose.yml
. Se a conexão for bem-sucedida, ele exibirá a mensagem "Conexão bem-sucedida via PostgreSQL!". Se ocorrer algum erro durante a conexão, ele exibirá a mensagem de erro correspondente.
Para iniciar o ambiente Docker, basta navegar até o diretório onde esses arquivos estão localizados e executar o comando docker compose up -d
. Isso irá construir as imagens, criar os contêineres e iniciar os serviços.
Após iniciar os contêineres, você poderá acessar seu aplicativo PHP em http://localhost
e o pgAdmin em http://localhost:8080
. Certifique-se de que nenhum outro serviço esteja utilizando as portas especificadas para evitar conflitos.
Com este ambiente Docker, você tem uma solução completa para desenvolvimento web e administração de banco de dados PostgreSQL. Você pode personalizar ainda mais conforme necessário para atender aos requisitos do seu projeto.
Top comments (0)