用Podman从零开始构建并运行一个Apache+PHP的容器镜像 (五)

经过上周的折腾,这个php+apache的Podman容器应该是可以用起来了(折腾记录:第一天第二天, 第三天, 第四天),本来想着这个星期开始折腾其它东西去了,比如再加上一个mariadb服务什么的。但周末这两天想想好像还是有些不完善,所以今天继续再这上面折腾了。

前面的配置DocumentRoot是写死了的:/workspaces/myproject/src/public。但是可能有些项目页面代码不一定是存在这个目录的,这样就要修改000-default.conf文件,然后再重新构建一个新的容器镜像,如此多少还是不够方便的。于是我想是否可以再创建具体的项目容器的时候再配置DocumentRoot呢?

解决思路是在创建项目容器的时候将实际的DocumentRoot作为环境变量传递给容器,这样我只需要修改000-default.conf的配置使用这个环境变量就可以了。想到了就去做,所以现在马上试试。先修改000-default.conf文件:

<VirtualHost *:80>
	DOCUMENT_ROOT = ${MY_DOCUMENT_ROOTl}

	ServerAdmin webmaster@localhost
	DocumentRoot ${DOCUMENT_ROOT}

	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	<Directory ${MY_DOCUMENT_ROOT}>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>

重新构建php_apache容器镜像:

E:\containers\php_apache>podman build . -t php_apache:7.4

...

COMMIT php_apache:7.4
--> 8b6008164c82
Successfully tagged localhost/php_apache:7.4
8b6008164c829430348c6958fd6bb58093140e8587d69f6e4e19ffd9a2361002

马上试试效果:

E:\test>podman run --rm -it -p8080:80 -v ./:/workspaces/myproject -e MY_DOCUMENT_ROOT=/workspaces/myproject/src/public localhost/php_apache:7.4
 * Starting Apache httpd web server apache2                                                                             
[Mon Aug 26 15:52:45.706661 2024] [core:warn] [pid 24] AH00111: Config variable ${MY_DOCUMENT_ROOT} is not defined
[Mon Aug 26 15:52:45.706957 2024] [core:warn] [pid 24] AH00111: Config variable ${MY_DOCUMENT_ROOT} is not defined
AH00112: Warning: DocumentRoot [/etc/apache2/${MY_DOCUMENT_ROOT}] does not exist
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.88.0.66. Set the 'ServerName' directive globally to suppress this message
 *
root@e7f412615b1e:/#

竟然提示MY_DOCUMENT_ROOT没有定义!!!

一阵狂搜索和折腾,没有找到一个完美的解决办法。最后只能修改entrypoint.sh文件:

#!/bin/bash

#service apache2 start
source /etc/apache2/envvars
apache2

exec "$@"

再重新构建容器镜像后再尝试:

E:\test>podman run --rm -it -p8080:80 -v ./:/workspaces/myproject -e MY_DOCUMENT_ROOT=/workspaces/myproject/src/public localhost/php_apache:7.4
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 10.88.0.69. Set the 'ServerName' directive globally to suppress this message
root@b644733fcd22:/#

终于是成功了,但是不能用service apache2 start来启动Apache服务,总是觉得有点不完美。我也不知道具体愿意是什么,不过不管了,反正也是可以用了。今天就到此为止吧,已经超时了。555

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值