@wwwansmer

Почему при попытке деплоя с docker swarm приложение nextjs не работает?

Доброго времени суток.
Создал приложение на nextjs. Добавил Dockerfile и docker-compose.yml с настройками для docker swarm. Создаю образ, загружаю в докер хаб, затем ввожу команду `docker stack deploy -c docker-compose.yml docktestapp', перехожу на localhost:3000 и вижу ошибку "This page isn’t working. localhost didn’t send any data. ERR_EMPTY_RESPONSE".
При этом, по логам из контейнера - nextjs успешно собрался, запустился и должен быть доступен на 3000 порту.
При обычном запуске докера через docker run -dp 3000:3000 docktestapp все нормально работает, контент отображается на 3000 порт.
Также, если по той же схеме запускаю приложение на express.js, то все прекрасно работает.

Почему это происходит и как заставить swarm работать с nextjs?

Dockerfile:
FROM node:16-alpine

# Create app directory
WORKDIR /app

# Install app dependencies
COPY package*.json ./

RUN npm install

# Bundle app source
COPY . .

RUN npm run build

EXPOSE 3000
CMD [ "npm", "run", "start" ]


docker-compose.yml
version: '3.7'

services:
  app:
    image: wwwansmer/docktestapp
    ports:
      - "3000:3000"
    command: npm run start
    deploy:
      replicas: 4
      update_config:
        parallelism: 2
        order: start-first
        failure_action: rollback
        delay: 10s
      rollback_config:
        parallelism: 0
        order: stop-first
      restart_policy:
        condition: any
        delay: 5s
        max_attempts: 3
        window: 120s
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:3000 || exit 1"]
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы