React dockerized app:路由无效

时间:2017-12-18 10:42:36

标签: reactjs docker heroku routing dockerfile

我是Docker的新手,我正在尝试使用此Dockerfile将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有五条路线:

他们运行正常,达到预期目的。

当我启动使用上面的Dockerfile生成的图像创建的容器时,我只能访问'/'并且所有正常工作的路由都会给我404.

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

这是什么问题?我在Docker错过了什么吗?我假设我是,因为我习惯了React但是对Docker来说是新手。

任何提示?

0 个答案:

没有答案