症狀是這樣,在服務器上手動運行是可以的,也可以訪問localhost:3000,但打包放進docker裏啓動之後就不行了,雖然能ping通,但是會一直報錯“讀取文件頭錯誤 (連接被對方重設)”。
看了很多文章,大概原因是host不對,或者是代理的問題。查找之後,發現原因是Dockerfile裏沒有明確host和port,導致host發生了錯誤。
貼一份可用的代碼,我把構建後的nuxt文件放到了/opt/app目錄下:
# base image
FROM node:12.16.1-alpine
# set env
ENV NODE_ENV=production
ENV HOST 0.0.0.0
# expose port
EXPOSE 3000
# build
COPY . /opt/app/
# start service
WORKDIR /opt/app
CMD npm run start