Como usar o .htaccess no docker com windows?

Criei 1 container com php-apache, 1 com mysql e 1 com phpmyadmin, e os 3 funcionam bem.

Mas quando coloco um arquivo .htaccess na minha pasta raíz, parece que o docker simplesmente não reconhece o arquivo.

Me parece que a solução é alterar o AllowOverride de NONE para All.
Mas como eu faço isso?

Meu computador está com sistema Windows.

Meu arquivo docker-compose.yml está assim: (eu realmente preciso usar no php5)

services:
php:
image: php:5.4.32-apache
container_name: php-apache
ports:
- “80:80”
- “443:443”
volumes:
- C:\Users\glauberme\projetos\meuprojeto:/var/www/html
links:
- db

db:
image: mysql:5.5
container_name: mysql5
ports:
- “3306:3306”
volumes:
- /var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root

myadmin:
image: phpmyadmin:5.0.2
container_name: phpmyadmin
ports:
- “8080:80”
links:
- db

Meu arquivo .htaccess está assim:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ app/index.php?url=$1

Depois de 1 semana tentando, finalmente consegui resolver:

Primeiro eu deletei meus containers e deixei apenas as imagens que já tinha.

Depois usei o comando abaixo para copiar o arquivo httpd.conf, da imagem php:5.4.32-apache para meu computador, renomeando esse arquivo no computador para mm.conf

docker run php:5.4.32-apache cat /usr/local/apache2/conf/httpd.conf > mm.conf

Editei o arquivo mm.conf com as seguintes alterações:

AllowOverride none para AllowOverride all
AllowOverride None para AllowOverride All
AllowOverride None para AllowOverride All
#LoadModule rewrite_module modules/mod_rewrite.so para
LoadModule rewrite_module modules/mod_rewrite.so

Ao salvar esse arquivo no bloco de notas, no campo “Codificação” mudei de “UTF-8” para “ANSI”.

Criei o arquivo Dockerfile com o seguinte conteúdo:

FROM php:5.4.32-apache
COPY mm.conf /usr/local/apache2/conf/httpd.conf

Executei o comando abaixo:

docker image build -t novo-php-apache:1.1 .

O comando acima criou uma imagem usando o arquivo Dockerfile.

A primeira linha do Dockerfile usa a imagem php:5.4.32-apache pra criar uma imagem nova.
A segunda linha copia o arquivo mm.conf para a pasta /usr/local/apache2/conf/httpd.conf. Renomeando o arquivo para httpd.conf.
A imagem nova terá o nome: novo-php-apache:1.1

Alterei a linha 3 do meu arquivo docker-compose.yml para usar a nova imagem na criação do container:

image: novo-php-apache:1.1

Usei o comando Docker-compose up -d para criar os novos containers.

E assim funcionou como eu queria.

This forum is for an international audience in English language. Please write/translate your posts in English.

Also make sure to format your content according How to format your forum posts.

Thank you!