【问题标题】:Dockerized apache server not exposing port 80Dockerized apache 服务器不暴露端口 80
【发布时间】:2017-12-18 06:00:31
【问题描述】:

我正在尝试在 docker 容器中运行 React 应用程序。我的应用程序镜像是使用以下 Dockerfile 构建的:

Dockerfile

FROM node:latest
LABEL autor="Ed de Almeida"

RUN apt-get update
RUN apt-get install -y apache2
RUN mkdir /tmp/myapp
COPY . /tmp/myapp
RUN cd /tmp/myapp && npm install
RUN cd /tmp/myapp && npm run build
RUN cd /tmp/myapp/build && cp -Rvf * /var/www/html
RUN cd /var/www && chown -Rvf www-data:www-data html/
EXPOSE 80

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

CMD /usr/sbin/apache2ctl -D FOREGROUND

如您所见,我创建了一个生产版本,将其复制到 Apache 服务器的标准目录,然后运行 ​​Apache 服务器。我什至暴露了 80 端口,即 Apache 默认端口。

我正在用

创建图像
docker build -t myimage .

并运行容器

docker run -d -p 80:80 --name myapp myimage

我可能遗漏了一些东西,因为我是 Docker 的新手,因为容器在那里,已经启动并正在运行,但是当我将浏览器指向 http://localhost 时,我什么也没有。

我进入了容器

docker exec -it myapp bash

并且应用程序在其中运行良好。

有什么提示吗?

【问题讨论】:

  • 当您进入容器内部时,尝试卷曲指定的端点,以确保问题出在暴露端口上。此外,连接被拒绝错误或浏览器中的其他错误之间存在差异。
  • curl http://127.0.0.1 在容器内运行良好并返回预期值。
  • 你是在 windows 还是 mac 上运行?
  • 我的主机是 Windows。节点的 Docker 镜像是基于 Debian Jessie 构建的。
  • 我已经给出了在 Windows 中运行 Docker 时类似问题的详细答案。参考这里->stackoverflow.com/a/47011886/4334340

标签: apache reactjs docker apache2


【解决方案1】:

在 windows 上运行时,Docker 将在后台运行的虚拟机上运行。因此你需要连接到这个虚拟机而不是本地主机。

可以通过运行获取机器ip:

docker-machine ip default

这将为您提供机器的 IP 地址,您可以使用该地址从浏览器进行连接。

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 1970-01-01
    • 2019-09-18
    • 1970-01-01
    • 2019-06-04
    • 2018-02-24
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多