【发布时间】: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