我试图在docker容器中运行React应用程序。我的应用程序映像是使用以下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
并且应用程序在其中运行良好。
任何提示?
在Windows上运行时,Docker将在后台运行的虚拟机上运行。这需要连接到此虚拟机而不是localhost。
您可以通过运行获取机器IP:
docker-machine ip default
这将为您提供机器的IP地址,您可以使用该地址从浏览器进行连接。