Um ambiente de pilha LAMP básico criado usando Docker Compose. Consiste no seguinte:
No momento, temos várias versões diferentes de PHP. Use a versão php apropriada conforme necessário:
docker compose up -d
. git clone https://github.com/sprintcube/docker-compose-lamp.git
cd docker-compose-lamp/
cp sample.env .env
// modify sample.env as needed
docker compose up -d
// visit localhost
Sua pilha LAMP agora está pronta!! Você pode acessá-lo via http://localhost
.
Este Docker Stack foi desenvolvido para desenvolvimento local e não para uso em produção.
Este pacote vem com opções de configuração padrão. Você pode modificá-los criando um arquivo .env
em seu diretório raiz. Para facilitar, basta copiar o conteúdo do arquivo sample.env
e atualizar os valores das variáveis de ambiente conforme sua necessidade.
Existem as seguintes variáveis de configuração disponíveis e você pode personalizá-las substituindo-as em seu próprio arquivo .env
.
PHPVERSION É usado para especificar qual versão do PHP você deseja usar. O padrão é sempre a versão mais recente do PHP.
PHP_INI Defina sua modificação personalizada php.ini
para atender às suas necessidades.
DOCUMENT_ROOT
É uma raiz de documento para o servidor Apache. O valor padrão para isso é ./www
. Todos os seus sites irão para aqui e serão sincronizados automaticamente.
APACHE_DOCUMENT_ROOT
Valor do arquivo de configuração do Apache. O valor padrão para isso é /var/www/html.
VHOSTS_DIR
Isto é para hosts virtuais. O valor padrão para isso é ./config/vhosts
. Você pode colocar seus arquivos conf de hosts virtuais aqui.
Certifique-se de adicionar uma entrada ao arquivo
hosts
do seu sistema para cada host virtual.
APACHE_LOG_DIR
Isso será usado para armazenar logs do Apache. O valor padrão para isso é ./logs/apache2
.
Para usuários do Apple Silicon: selecione Mariadb como banco de dados. Oracle não constrói seus contêineres SQL para a arquitetura arm
BANCO DE DADOS
Defina qual versão do MySQL ou MariaDB você gostaria de usar.
MYSQL_INITDB_DIR
Quando um contêiner é iniciado pela primeira vez, os arquivos neste diretório com as extensões .sh
, .sql
, .sql.gz
e .sql.xz
serão executados em ordem alfabética. Arquivos .sh
sem permissão de execução de arquivo são originados em vez de executados. O valor padrão para isso é ./config/initdb
.
MYSQL_DATA_DIR
Este é o diretório de dados MySQL. O valor padrão para isso é ./data/mysql
. Todos os seus arquivos de dados MySQL serão armazenados aqui.
MYSQL_LOG_DIR
Isso será usado para armazenar logs do Apache. O valor padrão para isso é ./logs/mysql
.
O Apache está configurado para rodar na porta 80. Portanto, você pode acessá-lo via http://localhost
.
Por padrão, os seguintes módulos estão habilitados.
Se você quiser habilitar mais módulos, basta atualizar
./bin/phpX/Dockerfile
. Você também pode gerar um PR e nós faremos a fusão se parecer bom para fins gerais. Você precisa reconstruir a imagem do docker executandodocker compose build
e reiniciar os contêineres do docker.
Você pode se conectar ao servidor web usando o comando docker compose exec
para realizar várias operações nele. Use o comando abaixo para fazer login no contêiner via ssh.
docker compose exec webserver bash
A versão instalada do php depende do seu arquivo .env
.
Por padrão, as seguintes extensões são instaladas. Pode ser diferente para versões do PHP <7.xx
Se você quiser instalar mais extensões, basta atualizar
./bin/webserver/Dockerfile
. Você também pode gerar um PR e nós faremos a fusão se parecer bom para fins gerais. Você precisa reconstruir a imagem do docker executandodocker compose build
e reiniciar os contêineres do docker.
O phpMyAdmin está configurado para rodar na porta 8080. Use as seguintes credenciais padrão.
http://localhost:8080/
nome de usuário: root
senha: tigre
O Xdebug vem instalado por padrão e sua versão depende da versão do PHP escolhida no arquivo ".env"
.
Versões do Xdebug:
PHP <= 7.3: Xdebug 2.XX
PHP >= 7.4: Xdebug 3.XX
Para usar o Xdebug você precisa habilitar as configurações no arquivo ./config/php/php.ini
de acordo com a versão PHP escolhida.
Exemplo:
# Xdebug 2
#xdebug.remote_enable=1
#xdebug.remote_autostart=1
#xdebug.remote_connect_back=1
#xdebug.remote_host = host.docker.internal
#xdebug.remote_port=9000
# Xdebug 3
#xdebug.mode=debug
#xdebug.start_with_request=yes
#xdebug.client_host=host.docker.internal
#xdebug.client_port=9003
#xdebug.idekey=VSCODE
Código Xdebug VS: você deve instalar a extensão Xdebug "PHP Debug". Depois de instalado, vá em Debug e crie o arquivo de inicialização para que seu IDE possa escutar e funcionar corretamente.
Exemplo:
MUITO IMPORTANTE: o pathMappings
depende de como você abriu a pasta no VS Code. Cada pasta tem suas próprias configurações de lançamento, que você pode visualizar em .vscode/launch.json
{
"version" : " 0.2.0 " ,
"configurations" : [
{
"name" : " Listen for Xdebug " ,
"type" : " php " ,
"request" : " launch " ,
// "port": 9000, // Xdebug 2
"port" : 9003 , // Xdebug 3
"pathMappings" : {
// "/var/www/html": "${workspaceFolder } /www" // if you have opened VSCODE in root folder
"/var/www/html" : " ${workspaceFolder} " // if you have opened VSCODE in ./www folder
}
}
]
}
Agora, faça um ponto de interrupção e execute o debug.
Dica! Após essas configurações, pode ser necessário reiniciar o contêiner.
Ele vem com Redis. Ele é executado na porta padrão 6379
.
O suporte para domínios https
é integrado, mas desabilitado por padrão. Existem 3 maneiras de ativar e configurar SSL; https
no localhost
é o mais fácil. Se você estiver tentando recriar um ambiente de teste o mais próximo possível de um ambiente de produção, qualquer nome de domínio poderá ser suportado com mais configurações.
Aviso: Para cada nome de domínio não localhost em que você deseja usar https
, você precisará modificar o arquivo hosts do seu computador e apontar o nome de domínio para 127.0.0.1
. Se você não fizer isso, o SSL não funcionará e você será roteado para a Internet toda vez que tentar visitar esse nome de domínio localmente.
Para habilitar https
no localhost
(https://localhost), você precisará:
localhost
:mkcert
, no terminal execute mkcert localhost 127.0.0.1 ::1
.cert.pem
e cert-key.pem
respectivamente.config/ssl
.443
em config/vhosts/default.conf
. Feito. Agora, sempre que você ligar seu contêiner LAMP, https
funcionará em localhost
.
Se você quiser usar nomes de domínio normais para testes locais e precisar de suporte https
, a solução mais simples é um certificado SSL que cubra todos os nomes de domínio:
mkcert
, no terminal execute mkcert example.com "*.example.org" myapp.dev localhost 127.0.0.1 ::1
onde você substitui todos os nomes de domínio e endereços IP por aqueles que deseja suportar.cert.pem
e cert-key.pem
respectivamente.config/ssl
.443
em config/vhosts/default.conf
. Feito. Como você combinou todos os nomes de domínio em um único certificado, o arquivo vhost suportará sua configuração sem a necessidade de modificá-la ainda mais. Você pode adicionar regras específicas de domínio, se desejar. Agora, sempre que você ativar seu contêiner LAMP, https
funcionará em todos os domínios que você especificou.
Se desejar que seu ambiente de teste local corresponda exatamente à sua produção e precisar de suporte https
, você pode criar um certificado SSL para cada domínio que deseja oferecer suporte:
mkcert
, no terminal execute mkcert [your-domain-name(s)-here]
substituindo a parte do colchete pelo seu nome de domínio.[name]-cert.pem
e [name]-cert-key.pem
substituindo a parte do colchete por um nome exclusivo.config/ssl
.443
do arquivo vhost ( config/vhosts/default.conf
), crie novas regras que correspondam ao seu nome de domínio e aos nomes dos arquivos de certificado. Feito. O contêiner LAMP extrairá automaticamente quaisquer certificados SSL em config/ssl
quando for iniciado. Contanto que você configure o arquivo vhosts corretamente e coloque os certificados SSL em config/ssl
, sempre que você ligar o contêiner LAMP, https
funcionará nos domínios especificados.
Ficaremos felizes se você quiser criar uma solicitação pull ou ajudar as pessoas com seus problemas. Se você deseja criar um PR, lembre-se de que esta pilha não foi criada para uso em produção e as alterações devem ser boas para fins gerais e não excessivamente especializadas.
Observe que simplificamos a estrutura do projeto de vários ramos para cada versão do php, para um ramo mestre centralizado. Por favor, crie seu PR em relação ao branch master.
Obrigado!
Queremos capacitar os desenvolvedores para criar rapidamente aplicativos criativos. Portanto, estamos fornecendo um ambiente de desenvolvimento local fácil de configurar para vários Frameworks e versões de PHP diferentes. Em Produção você deve modificar no mínimo os seguintes assuntos: