
这篇
文章主要探讨Docker安装
PHP时一直不动的问题。使用Docker安装和部署
PHP应用时,有时候我们会遇到这样的问题:在启动Docker容器后,命令行没有任何
输出,而且容器没有
显示为正在运行状态,这种情况下我们应该如何
解决呢?
在使用Docker安装
PHP时,通常需要使用Dockerfile
文件来指定镜像的描述,例如:
```
FROM
PHP:7.2-apache
copY index.
PHP /var/www/html/
EXPOSE 80
```
上面的
代码片段表示我们使用了
一个基于
PHP:7.2-apache镜像的Docker容器,并将index.
PHP文件复制到/var/www/html/目录下,然后暴露80端口。
当我们使用该Dockerfile
文件构建镜像时,有时候会遇到构建过程一直不动的情况,例如,构建过程停留在以下
输出中:
```
...
PHP Core
checking for a sed that does not t
runcate output... /bin/sed
checking if a
PHP $cfg['Libdir'] is already set... yes
checking chosen os... linux-gnu
checking compiler... gcc
checking for common suffixes... yes
...
```
在这种情况下,我们可以尝试重新构建镜像,通常可以
解决该问题。
另外,有时候我们会发现使用基于
PHP官方镜像的Docker容器时,构建过程也可能会卡住。例如,下面的Dockerfile
文件:
```
FROM
PHP:latest
copY index.
PHP /var/www/html/
```
在构建该镜像时,如果Docker容器卡在以下
输出时:
```
...
In file included from /usr/local/include/
PHP/main/
PHP.h:26:0,from /usr/local/include/
PHP/
PHP.h:35,from /usr/src/
PHP/ext/date/
PHP_date.h:25,from /usr/src/
PHP/ext/date/lib/parse_date.re:30:
/usr/local/include/
PHP/Zend/zend.h:51:10:
Fatal error: zend_con
fig.h: No such file or directory
#include "zend_con
fig.h"
^~~~~~~~~~~~~~~~
compilation terminated.
...
```
这种情况通常是由于网络问题导致的。
在这种情况下,我们可以通过
修改Dockerfile
文件来使用中国镜像或者本地下载的
PHP源码来
解决该问题,例如:
使用中国镜像:
```
FROM registry.docker-cn.com/library/
PHP:latest
copY index.
PHP /var/www/html/
```
使用本地下载的
PHP源码:
```
FROM scratch as source
ADD http://cn2.
PHP.net/get/
PHP-7.2.12.tar.gz /
PHP.tar.gz
RUN tar zxvf /
PHP.tar.gz
FROM
PHP:7.2-apache
copY --from=source /
PHP-7.2.12 /usr/local/src/
PHP
copY index.
PHP /var/www/html/
EXPOSE 80
```
当然,还有其他
方法来
解决这个问题,该问题的根源是由于Docker环境出现了问题,我们可以查看Docker的日志记录,寻找
错误原因。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。