Docker compose和dockerfile/.htaccess问题
我在一个项目中工作了几天,我的任务是使用Docker。在以下几个教程之后,我找到了使用Docker compose和dockerfile/.htaccess问题,docker,apache,server,docker-compose,dockerfile,Docker,Apache,Server,Docker Compose,Dockerfile,我在一个项目中工作了几天,我的任务是使用Docker。在以下几个教程之后,我找到了使用docker compose部署LAMP服务器的简单方法,如下所示: version: '3.7' services: php-httpd: image: php:7.3-apache ports: - 80:80 volumes: - "./DocumentRoot:/var/www/html&
docker compose
部署LAMP服务器的简单方法,如下所示:
version: '3.7'
services:
php-httpd:
image: php:7.3-apache
ports:
- 80:80
volumes:
- "./DocumentRoot:/var/www/html"
mariadb:
image: mariadb:10.5.2
volumes:
- mariadb-volume:/var/lib/mysql
environment:
TZ: "Europe/Rome"
MYSQL_ALLOW_EMPTY_PASSWORD: "no"
MYSQL_ROOT_PASSWORD: "rootpwd"
MYSQL_USER: 'testuser'
MYSQL_PASSWORD: 'testpassword'
MYSQL_DATABASE: 'testdb'
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- 'mariadb:db'
ports:
- 8081:80
volumes:
mariadb-volume:
现在,在我的应用程序处于开发过程中之后,我发现一个问题,我需要编辑.htaccess
以启用mod_rewrite并为REST API添加一些规则
我找到的所有解决方案都提到我应该在dockerfile
中添加RUN命令,如下所示:
FROM httpd:alpine
# Copy .htaccess into DocumentRoot
COPY ./.htaccess /var/www/html/
RUN sed -i '/LoadModule rewrite_module/s/^#//g' /usr/local/apache2/conf/httpd.conf
但是我没有那个文件,官方文件对我也没有帮助
我所做的就是运行我的图像。所以问题是:
我应该在哪个阶段、如何以及在何处添加此文件以使其正常工作。
我知道这是可能的,因为我在一个教程中发现了这句话:
下一次,我们将创建一个更复杂的docker-compose.yml
文件,与Dockerfile一起工作的文件
但没有后续行动
如果您能给我一些指导,我将不胜感激
我还知道我可以使用:docker exec-it linuxconfig\u PHP-httpd\u 1 bash访问PHP映像。
也许我可以做点什么?
您有两个选择:
FROM php:7.3-apache
RUN sed -i '/LoadModule rewrite_module/s/^#//g' /usr/local/apache2/conf/httpd.conf
创建图像:
docker build -t custom-php:7.3-apache .
这将创建一个新的图像名称(定制php:7.3-apache)。然后,您可以在docker-compose.yml文件中使用此新映像,部署时,容器将具有更新的.htaccess
我更喜欢#2,因为您可以编辑.htaccess规则,而无需重建图像。感谢您的时间,我仍在尝试查找.htaccess中需要的内容,但我会选择第二个选项,但不确定我应该将新的.htaccess文件放在该卷的何处。我已将其放在composer文件旁边的根目录中,他将其装入公用文件夹的根目录中,但它似乎是空的。我收到内部服务器错误服务器遇到内部错误或配置错误,无法完成您的请求。我只是报告一下,我没有在php中打开模式重写模块,我设法用a2enmod rewrite将其打开,但htaccess在根目录中仍然加载为空。而且没有效果。稍后我将尝试第一个选项…尝试在卷中使用绝对路径而不是相对路径:部分更改路径没有帮助,我得到了有关卷的错误,当尝试使用选项1时,我得到:
=>错误[2/2]运行sed-i'/LoadModule rewrite_module/s/^#/g'/usr/local/apache2/conf/httpd.conf 0.5s------->[2/2]运行sed-i'/LoadModule rewrite_module/s/^#//g'/usr/local/apache2/conf/httpd.conf:#5 0.522 sed:can't read/usr/local/apache2/conf/httpd.conf:没有这样的文件或目录
,所以我仍然卡住了。。。“docker简约”到此为止
php-httpd:
image: php:7.3-apache
ports:
- 80:80
volumes:
- "./DocumentRoot:/var/www/html"
- "./.htaccess:/var/www/html/.htaccess"