经过上周的折腾,这个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
585

被折叠的 条评论
为什么被折叠?



