Railway平台WordPress+Node.js单体仓库部署失败求助
Railway部署WordPress+Node.js单体仓库报错:stream did not contain valid UTF-8
问题背景
本地通过Docker Compose可正常运行的单体仓库(包含WordPress官方下载目录和Node.js服务),部署到Railway平台时,Nixpacks构建失败,报错读取wordpress/wp-includes/js/tw-sack.js时出现“stream did not contain valid UTF-8”错误。
目录结构:
├── app/ # Node.js服务目录(含Dockerfile) ├── wordpress/ # WordPress目录(含Dockerfile) └── docker-compose.yml
相关配置文件
WordPress的Dockerfile
FROM wordpress:6.6.1-php8.1-apache WORKDIR /var/www/html # 安装PostgreSQL扩展 RUN apt-get update \ && apt-get install -y libpq-dev \ && docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql \ && docker-php-ext-install pdo pdo_pgsql pgsql COPY . . RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf # 暴露端口 EXPOSE PORT CMD ["apache2-foreground"]
docker-compose.yml
version: "3.7" services: app: build: context: app dockerfile: Dockerfile networks: - tropikode-app volumes: - ./app:/usr/src/app ports: - PORT:PORT command: ["npx", "nodemon", "index.js"] wordpress: build: context: wordpress dockerfile: Dockerfile networks: - tropikode-app volumes: - ./wordpress:/var/www/html ports: - PORT:PORT command: ["apache2-foreground"] networks: tropikode-app: driver: bridge
错误信息
[Region: us-west1] ============== Using Nixpacks ============== context: 31daf3c904b83b14cdf6e79f9497df80 Nixpacks build failed Error: Error reading wordpress/wp-includes/js/tw-sack.js Caused by: stream did not contain valid UTF-8
解决方法
1. 直接用Docker Compose部署(最省心)
Railway支持直接识别根目录的docker-compose.yml,无需走Nixpacks自动构建流程:
- 在Railway项目中添加服务时,选择「Docker Compose」选项,关联你的仓库。
- 平台会自动按照本地Docker Compose的逻辑构建两个服务,完全避开Nixpacks的编码检测问题。
2. 修复tw-sack.js的编码损坏问题
该文件大概率在下载或Git提交过程中出现编码损坏:
- 从WordPress官方下载对应6.6.1版本的
tw-sack.js文件(路径wp-includes/js/tw-sack.js),替换仓库中的同名文件。 - 提交修改后的文件到仓库,重新触发Railway构建。
3. 配置Nixpacks忽略WordPress目录(若Node.js为核心服务)
如果你的核心业务是Node.js服务,WordPress仅作为附属组件,可让Nixpacks只处理app目录:
- 在根目录创建
nixpacks.toml文件,内容如下:
[phases.setup] ignore = ["wordpress/**/*"]
- 配置后Nixpacks会跳过WordPress目录的文件检测,仅构建Node.js服务。后续WordPress可单独部署,或继续使用Docker Compose方式部署。
4. 统一仓库文件编码规范
确保仓库内所有文件均为UTF-8编码:
- 用VS Code打开
tw-sack.js,查看右下角编码标识,若不是UTF-8则切换编码后保存,重新提交到仓库。 - 配置Git默认编码避免后续出现编码问题:
git config --global core.encoding utf-8 git config --global gui.encoding utf-8
内容的提问来源于stack exchange,提问作者Jovanny Ruiz
相关产品推荐
相关产品推荐

