无法从docker容器运行Apache / php

时间:2017-04-26 17:08:18

标签: php apache ubuntu docker dockerfile

我的要求是使用openface我需要训练数据集(图像)并测试来自webinterface(PHP)的每个输入图像,所有这些活动应该从docker容器运行。

我能够在ubuntu机器上达到上述要求。我们正在尝试在docker中安装完整的设置(apache / php& openface)。 目前我们无法使用docker

从apache服务器调用html文件

以下docker文件用于将项目导入docker并安装apache / PHP。如果需要在dockerfile中进行任何更改,请告诉我。

FROM ubuntu:16.04

RUN apt-get update && \
      apt-get -y install sudo

RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo

ADD opencv-3.0.0 /

ADD openface_setup.sh /

RUN /openface_setup.sh

ADD openface_work /


RUN apt-get update && apt-get -y upgrade && DEBIAN_FRONTEND=noninteractive apt-get -y install \
apache2 php7.0 libapache2-mod-php7.0 curl lynx-cur

RUN a2enmod php7.0
RUN a2enmod rewrite

RUN sed -i "s/short_open_tag = Off/short_open_tag = On/" /etc/php/7.0/apache2/php.ini
RUN sed -i "s/error_reporting = .*$/error_reporting = E_ERROR | E_WARNING | E_PARSE/" /etc/php/7.0/apache2/php.ini

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid

EXPOSE 8080

VOLUME /var/www/html # **my PHP/html files are located here. In the docker container the html/php files are not reflecting**

ADD apache-config.conf /etc/apache2/sites-enabled/000-default.conf

CMD /usr/sbin/apache2ctl -D FOREGROUND

容器启动后,我希望test.html(位于/ var / www / html中)运行。

仅供参考:

  1. 创建泊坞窗图像的命令

    sudo docker build -t myname/apache-test .

  2. 启动docker容器的命令

    docker run -p 8080:80 -d <imageid>

2 个答案:

答案 0 :(得分:1)

我建议将the official PHP image与预先安装的Apache安装一起使用。

您的项目可能如下所示:

.
├── Dockerfile
└── src
    └── index.php

,而您的Dockerfile包含以下内容:

FROM php:7.1-apache
# now RUN here your commands to install openface etc.

你的index.php看起来像这样:

<?php phpinfo();

然后构建图像:

docker build -t myapache .
docker run --rm -p 8080:80 -v $(pwd)/src:/var/www/html myapache

http://localhost:8080显示了php-info页面。

您可以根据需要扩展图像,这比您的方法简单得多。希望这可能有所帮助。

如果您不需要安装其他任何东西,可以在创建新容器时直接使用php:7.1-apache图像。

答案 1 :(得分:0)

尝试输入 docker ps 以获取在容器中运行的所有进程。 然后输入 docker run -it container-id

它将启动apache服务器并显示它托管它的地址,除非你想在 /etc/docker/daemon.json https://docs.docker.com/engine/userguide/networking/default_network/custom-docker0/)中添加另一个