apache Docker合成和Dockerfile / .htaccess问题

tzxcd3kk  于 2023-03-19  发布在  Apache
关注(0)|答案(2)|浏览(136)

我在一个项目中工作了几天,我有一个使用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。也许我可以用它做点什么?

w8ntj3qf

w8ntj3qf1#

您有两种选择:

  1. Docker是一个分层的文件系统,您可以使用一个映像并对其进行修改以创建另一个映像,然后可以将其推送到您的专用Docker注册表或公共Dockerhub。要使用您的.htaccess更改创建自定义映像,您将创建一个名为“Dockerfile”的文件。然后将Dockerfile放在您修改的.htaccess所在的目录中

停靠文件内容

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 .

这将创建一个新的图像名称(custom-php:7.3-apache),然后您可以在docker-composite.yml文件中使用这个新图像,部署后,容器将具有更新的.htaccess
1.您可以使用 volumes 选项将.htaccess装载到所需路径,如下所示

php-httpd:
    image: php:7.3-apache
    ports:
        - 80:80
    volumes:
        - "./DocumentRoot:/var/www/html"
        - "./.htaccess:/var/www/html/.htaccess"

我更喜欢#2,因为你可以编辑.htaccess规则,而无需重建映像。

mjqavswn

mjqavswn2#

在Dockerfile中添加“运行a2enmod重写”

相关问题