反应docker化的应用程序:路线不工作

我是新来的Docker,我正在尝试使用这个Dockerfile dockerize一个React应用程序:

Dockerfile

FROM node:latest LABEL autor="Ed de Almeida" RUN apt-get update && apt-get install -y apache2 tree 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 

这个应用程序使用react-router v4 ,当我用npm start运行它时,它在我的电脑上工作得非常好。 在Heroku中它也可以正常工作,但是为了使路由工作,我不得不添加一个static.json文件,否则我只能路由“/”工作,所有其他路由(如/ admin)我404。

static.json

 { "root": "build/", "routes": { "/**": "index.html" } } 

现在我在Heroku有五条路线:

  • http://businessfy.herokuapp.com/
  • http://businessfy.herokuapp.com/admin
  • http://businessfy.herokuapp.com/admin/usuarios
  • http://businessfy.herokuapp.com/admin/financeiro
  • http://businessfy.herokuapp.com/admin/equipe

他们运行良好,去预期的地方。

它发生了,当我启动上面的Dockerfile生成的图像创build容器时,我只能访问“/”,所有工作正常的路线会给我一个404。

我试图添加static.json文件,但它根本不工作。 首先,我将它复制到应用程序根目录,就像Heroku一样。 没有改变。 然后我试图从我的index.js文件中导入它。 再次,没有任何改变。

这里有什么问题? 我在Docker上丢失了什么? 我假设我是,因为我已经习惯了React,但对Docker来说是新的。

任何提示?