Доброго времени суток.
Создал приложение на 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"]