Dockerized apache服务器不暴露端口80

问题描述 投票:0回答:1

我试图在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

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

任何提示?

apache reactjs docker apache2
1个回答
2
投票

在Windows上运行时,Docker将在后台运行的虚拟机上运行。这需要连接到此虚拟机而不是localhost。

您可以通过运行获取机器IP:

docker-machine ip default

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

© www.soinside.com 2019 - 2024. All rights reserved.