代码之家  ›  专栏  ›  技术社区  ›  Ed de Almeida

停靠的apache服务器未公开端口80

  •  0
  • Ed de Almeida  · 技术社区  · 7 年前

    我正在尝试在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服务器。我甚至公开了Apache默认端口80。

    我正在用创建图像

    docker build -t myimage .
    

    并使用

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

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

    我带着

    docker exec -it myapp bash
    

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

    有什么提示吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   yamenk    7 年前

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

    您可以通过运行以下命令获取计算机ip:

    docker-machine ip default
    

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