在 Docker 容器中运行 Razzle 时,我遇到了几个问题,主要是因为 127.0.0.1 假设。
[x] 设置 INSPECT_ENABLED 的 razzle start 的 --inspect 参数不通过 IP 地址。 例如 --inspect=0.0.0.0:9229。 默认情况下,inspect 使用 127.0.0.1,我无法将其从主机转发到容器内的端口 9229。
[ ] 无法告诉客户端要连接到哪个主机名。 假设localhost:81 。 公关在这里:#530
[x] 环境变量不被视为变量。 Docker 构建静态镜像,期望部署在不同的环境中,并由环境变量控制。 第528章
我也使用 docker-compose 遇到了类似的问题。 我希望我的客户端构建在构建时包含 ENV 变量的值。 但是像我的服务器这样的运行时 ID 从运行时 ENV 变量中提取,基本上如此处所述https://github.com/jaredpalmer/razzle/issues/528#issuecomment -372998123 。 这背后的原因是因为我正在 docker-composed 一个 nginx 反向代理,它位于我的 api 和 razzle 应用程序前面。 在客户端上,我需要我的应用程序来查询公开的反向代理端口。 但是在服务器上,我需要我的应用程序直接查询我的 api 服务,如此处https://docs.docker.com/compose/networking/
@gregmartyn @adamjv90看看https://github.com/jaredpalmer/razzle/issues/528#issuecomment -386563055
我现在遇到的一个问题是 RAZZLE_PUBLIC_DIR 默认情况下从构建机器注入完整路径,出于 CI 性能原因,这与我复制构建资产的运行时机器完全不同。
@jwickens我有同样的问题,最后我试图避免使用 RAZZLE_PUBLIC_DIR,除非在本地开发模式下运行。 使用节点模块 is-docker 我运行以下:
const isDocker = require('is-docker');
const env = require('get-env');
const staticPath = env === 'dev' && !isDocker() ? process.env.RAZZLE_PUBLIC_DIR : path.join(__dirname, '../build/public');
server.use(express.static(staticPath));
不理想,但至少它有效。 在本地开发模式和 docker 内部运行良好。
@jwickens如果您知道运行时公共目录的位置,请在运行构建命令时使用它来覆盖 RAZZLE_PUBLIC_DIR 环境变量,它应该可以工作。
你好! 所以这就是开源和我的日常工作和生活之间的交易,我有很多事情要管理,所以我使用 GitHub 机器人在这里和那里自动化一些事情。 这个特定的 GitHub bot 会将其标记为过时,因为它有一段时间没有最近的活动。 如果几天内没有进一步的活动,它将被关闭。 不要把这一点放在个人身上——认真地——这是一个完全自动化的动作。 如果这是一个错误,请发表评论,DM 我,发送载体 pidgeon 或烟雾信号。
由于不活动,ProBot 自动关闭了它。 如果这是一个错误,请大喊大叫,我们将重新打开它。
最有用的评论
@jwickens如果您知道运行时公共目录的位置,请在运行构建命令时使用它来覆盖 RAZZLE_PUBLIC_DIR 环境变量,它应该可以工作。