Невозможно перенести Docker с сервера Nuxt на express на хост - PullRequest
0 голосов
/ 01 августа 2020

Я использую Docker для Windows (Windows 10 в 2004 году, поэтому у меня есть WSL2), и я пытаюсь поместить приложение Nuxt в контейнер. Приложение хорошо работает в моей локальной системе, и после создания файла Dockerfile и его сборки я не могу перенести его на мою хост-систему. Принимая во внимание, что, пытаясь сделать то же самое с примерами приложений из https://github.com/BretFisher/docker-mastery-for-nodejs/tree/master/ultimate-node-dockerfile (предполагается использовать Dockerfile из папки test), я могу получить доступ к тому же.

Если я exec в мой работающий контейнер, я могу получить результат при запуске curl http://localhost:3000, так что, предположительно, все в порядке.

Мой Dockerfile выглядит как

FROM node:12.18.3-buster-slim
LABEL org.opencontainers.image.authors=sayak@redacted.com
EXPOSE 3000
WORKDIR /app
RUN chown -R node:node /app
COPY --chown=node:node package*.json ./
ENV NODE_ENV=development
RUN apt-get update -qq && apt-get install -qy \
    ca-certificates \
    bzip2 \
    curl \
    libfontconfig \
    --no-install-recommends
USER node
RUN npm config list
RUN npm ci \
    && npm cache clean --force
ENV PATH=/app/node_modules/.bin:$PATH
COPY --chown=node:node . .
RUN nuxt build
ENV NODE_ENV=production
CMD ["node", "server/index.js"]

Я даже попытался удалить все chown s и удаление USER node, чтобы запустить его как root, но безрезультатно.

Это результат docker ps -a

d727c8dd4d5c        my-container:1.2.3   "docker-entrypoint.s…"   23 minutes ago      Up 23 minutes               0.0.0.0:3000->3000/tcp   inspiring_dhawan
c3a5aac8b79f        sample-node-app      "/tini -- node serve…"   23 minutes ago      Up 23 minutes (unhealthy)   0.0.0.0:8080->8080/tcp   tender_ardinghelli

sample-node-app из приведенная выше ссылка на GitHub работает, а мой my-container - нет. Что я делаю не так?

РЕДАКТИРОВАТЬ: Я пробовал создавать и запускать контейнеры на виртуальной машине Ubuntu, но получаю тот же результат, поэтому это не проблема с WSL или Windows, но что-то не так с моими Dockerfile.

1 Ответ

0 голосов
/ 02 августа 2020

Нашел решение! Nuxt изменяет адрес по умолчанию, который слушает сервер, с 0.0.0.0 на 127.0.0.1, а Docker может переадресовывать порты только с 0.0.0.0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...