Docker — веб-развертывание Flutter — сайт недоступен

Я использую Docker и Flutter Web. Я только что закончил настраивать для него Docker и Compose. Мой Dockerfile

FROM ubuntu:18.04

ARG PROJECT_DIR=/srv/api
ENV PATH=/opt/flutter/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

RUN apt-get update && \
    apt-get install -y \
        xz-utils \
        git \
        openssh-client \
        curl && \
    apt-get upgrade -y && \
    rm -rf /var/cache/apt

RUN curl -L https://storage.googleapis.com/flutter_infra/releases/stable/linux/flutter_linux_v1.7.8+hotfix.4-stable.tar.xz | tar -C /opt -xJ

RUN apt-get install -y lib32stdc++6

WORKDIR ${PROJECT_DIR}
COPY ./ ./

RUN flutter doctor
RUN flutter upgrade
RUN flutter packages pub global activate webdev
RUN flutter packages upgrade

My docker-compose.yaml

version: '3.1'
services:
  api:
    container_name: flutter-web-test
    restart: always
    image: flutter-web-test
    build:
      context: ./
    volumes:
      - //var/run/docker.sock:/var/run/docker.sock
    command: ["flutter", "pub", "global", "run", "webdev", "serve", "web:5001"]

После выполнения docker-compose -f docker-compose.yaml build и docker-compose -f docker-compose.yaml up я получаю, что сервер должен работать.

flutter-web-test | web

flutter-web-test | [WARNING] Throwing away cached asset graph due to Dart SDK update.


flutter-web-test | [INFO] Cleaning up outputs from previous builds. completed, took 76ms

flutter-web-test | [INFO] Building new asset graph completed, took 2.5s

flutter-web-test | [INFO] Checking for unexpected pre-existing outputs. completed, took 2ms

flutter-web-test | [INFO] Serving `web` on http://127.0.0.1:5001

Однако, когда я пытаюсь подключиться к http://127.0.0.1:5001, я вижу This site cannot be reached окно.

Если я запускаю его локально, он работает отлично. Я считаю, что, должно быть, что-то пропустил в Docker, но не могу найти проблему. Кто-нибудь может помочь выявить проблему?


person Aurimas Deimantas    schedule 02.09.2019    source источник
comment
Веб-сервер должен прослушивать соединения на 0.0.0.0, проверьте этот ответ, и порт должен быть опубликован (это «ports» конечно)   -  person masseyb    schedule 02.09.2019
comment
Примечание: отображение тома демона docker неверно («/var/run/docker.sock:/var/run/docker.sock»).   -  person masseyb    schedule 02.09.2019
comment
Спасибо, @masseyb, ты снова спас меня. Теперь это работает. Однако появилась другая проблема. Расследую это сейчас   -  person Aurimas Deimantas    schedule 02.09.2019
comment
Конечно - добавлен ответ со ссылкой на подробности относительно 0.0.0.0.   -  person masseyb    schedule 02.09.2019


Ответы (2)


Сервер webdev должен прослушивать 0.0.0.0 вот так ответить.

Служба ports должна быть сопоставлена ​​с хостом, а путь демона docker должен быть /var/run/docker.sock:

version: '3.1'
services:
  api:
    container_name: flutter-web-test
    restart: always
    image: flutter-web-test
    ports:
      - "5001:5001"
    build:
      context: ./
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    command: ["flutter", "pub", "global", "run", "webdev", "serve", "--hostname", "0.0.0.0:5001"] 
person masseyb    schedule 02.09.2019

В файле docker-compose отсутствует port.

version: '3.1'
services:
  api:
    container_name: flutter-web-test
    restart: always
    image: flutter-web-test
    port:
      - "5001":"5001"
    build:
      context: ./
    volumes:
      - //var/run/docker.sock:/var/run/docker.sock
    command: ["flutter", "pub", "global", "run", "webdev", "serve", "web:5001"]
person Rafaf Tahsin    schedule 02.09.2019
comment
Небольшая синтаксическая ошибка, как и должно быть ports: - 5001:5001 Однако после запуска та же проблема. Не работает. Однако сообщение об ошибке изменилось. Сейчас This page isn't working - person Aurimas Deimantas; 02.09.2019