I use docker-compose to build and run an SSR Nuxt.JS application. Web server is nginx.
I cannot use nginx reverse proxy to run this application, because directory dist is not created in /app/. This is my Dockerfile:
FROM node:14.17.0-alpine
WORKDIR /app
COPY . /app
RUN apk add python make g
RUN yarn install
RUN yarn build
ENV HOST 0.0.0.0
ENV PORT 3000
ENV NODE_ENV production
EXPOSE 3000
CMD [ "yarn", "start" ]
It does not work. But If I run this command in my docker host path /home/path/project-1/ (the path Nuxt.JS files exist):
yarn start
I can temporarily see the application via:
http://ip:3000
I searched and tried some solutions, but none of them worked (unfortunately).
This is the log when I run yarn start in my terminal:
yarn run v1.22.11
$ nuxt start
ℹ [HPM] Proxy created: /api/ -> https://api.site.com/api
ℹ [HPM] Proxy rewrite rule created: "^/api/" ~> ""
╭───────────────────────────────────────────╮
│ │
│ Nuxt.js @ v2.14.3 │
│ │
│ ▸ Environment: production │
│ ▸ Rendering: server-side │
│ ▸ Target: server │
│ │
│ Memory usage: 32.7 MB (RSS: 105 MB) │
│ │
│ Listening: http://ip:3000/ │
│ │
╰───────────────────────────────────────────╯
What is wrong for running?
The reason I cannot proxy pass it to nginx is that there's no document root. If I use # at the beginning of root directive, I use this error in nginx:
2021/10/14 12:02:29 [error] 25#25: *180 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: my_ip, server: app.site.com, request: "GET / HTTP/1.1", host: "app.site.com"
2021/10/14 12:02:29 [error] 25#25: *181 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: my_ip, server: app.site.com, request: "GET /favicon.ico HTTP/1.1", host: "app.site.com", referrer: "https://app.
Update 1
As said kissu, this is the related block in nuxt.config.js:
target: 'server',
server: {
port: 3000, // default: 3000
host: '0.0.0.0', // default: localhost
},
CodePudding user response:
Using yarn build and targeting /app/.nuxt fixed the issue.
