我在一个项目中工作了几天,我有一个使用Docker的任务。在学习了一些教程后,我发现了使用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
但是我没有那个文件,官方文件对我没有帮助。
我所做的就是sudo docker-compose up -d
来运行我的图像。所以问题是:
在哪个阶段、如何以及在何处添加此文件才能使其正常工作。
我知道这是可能的,因为我发现这句话在一个教程:
下一次,我们将创建一个更复杂的docker-compose.yml文件,它与Dockerfile一起工作。
但没有后续报道。
我希望在这方面得到任何指导。
我还知道我可以访问PHP图像:docker exec -it linuxconfig_php-httpd_1 bash
。也许我可以用它做点什么?
2条答案
按热度按时间w8ntj3qf1#
您有两种选择:
停靠文件内容
创建映像:
这将创建一个新的图像名称(custom-php:7.3-apache),然后您可以在docker-composite.yml文件中使用这个新图像,部署后,容器将具有更新的.htaccess
1.您可以使用 volumes 选项将.htaccess装载到所需路径,如下所示
。
我更喜欢#2,因为你可以编辑.htaccess规则,而无需重建映像。
mjqavswn2#
在Dockerfile中添加“运行a2enmod重写”