Как настроить мой докер-контейнер для запуска в браузере? - PullRequest
1 голос
/ 14 мая 2019

Как правильно настроить и собрать свой докер-контейнер / образ для запуска в веб-браузере?

У меня есть метеорное веб-приложение и используется одно из существующих базовых образов: jshimko / meteor-Панель запуска , рекомендованная в официальном Метеорологическом руководстве по Деполяция и мониторинг , учебное руководство по адресу meteor-launchpad-github .Мне удалось создать изображение на основе моего веб-приложения , но ему никогда не назначался порт , поэтому я не могу запустить его в браузере.

Добавил Dockerfile в корень моего веб-приложения и добавил следующее содержимое

FROM debian:jessie

Чтобы создать образ, я запускаю нижеприведенное в терминале

docker build -t sirbt/myapp .

, котороеyeilded:

Sending build context to Docker daemon  2.331MB
Step 1/1 : FROM debian:jessie
 ---> b6e9658de383
Successfully built b6e9658de383
Successfully tagged sirbt/myapp:latest

Затем я начинаю сохранять следующее содержимое в файле .dockerignore, который я также сохраняю в корне каталога приложения

.git
.meteor/local
node_modules

, а затем запускаю приведенный ниже код длязапустите myapp в контейнере

docker run -d \
  -e ROOT_URL=http://example.com \
  -e MONGO_URL=mongodb://url \
  -e MONGO_OPLOG_URL=mongodb://oplog_url \
  -e MAIL_URL=smtp://mail_url.com \
  -p 70:3000 \
  sirbt/myapp

код, затем вы получите:

4e616999e521014fcb19d33869b45c79d93d6774d2d02e2f413343b72294f88b

Я следую за этим командой:

docker ps

Какойyeild:

CONTAINER ID  IMAGE COMMAND CREATED STATUS PORTS   NAMES

Однако

docker ps -a yeilds:

CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS PORTS                                      NAMES
4e616999e521        sirbt/myapp         "bash"                   3 minutes ago       Exited (0) 2 minutes ago                           compassionate_greider

Как вы можете сказать, контейнеру порт не назначенчтобы я мог запустить его в браузере.Учебное пособие предполагает, что в этот момент я смог запустить его на локальном хосте через порт 80 (в моем случае порт 70) .Что мне здесь не хватает?Как я могу настроить свой док-контейнер так, чтобы ему был назначен порт, позволяющий мне запускать его в браузере?

Найдите ниже содержимое моего docker-compose.yml

# docker-compose.yml

app:
  image: yourname/app
  ports:
    - "70:3000"
  links:
    - mongo
  environment:
    - ROOT_URL=http://example.com
    - MONGO_URL=mongodb://mongo:27017/meteor

mongo:
  image: mongo:latest
  command: mongod --storageEngine=wiredTiger

Обновите, чтобы отразить, почему я не использую FROM jshimko/meteor-launchpad:latest в своем файле Docker

Когда я обновляю свой Dockerfile с помощью FROM jshimko/meteor-launchpad:latest, как предложено в руководстве.Я получаю следующее сообщение об ошибке:

`Get:6 http://deb.debian.org jessie/main amd64 Packages [9098 kB]
Fetched 10.1 MB in 8s (1154 kB/s)
W: Failed to fetch http://deb.debian.org/debian/dists/jessie-updates/InRelease  Unable to find expected entry 'main/binary-amd64/Packages' in Release file (Wrong sources.list entry or malformed file)

E: Some index files failed to download. They have been ignored, or old ones used instead.
The command '/bin/sh -c cd $APP_SOURCE_DIR &&   $BUILD_SCRIPTS_DIR/install-deps.sh &&   $BUILD_SCRIPTS_DIR/install-node.sh &&   $BUILD_SCRIPTS_DIR/install-phantom.sh &&   $BUILD_SCRIPTS_DIR/install-graphicsmagick.sh &&   $BUILD_SCRIPTS_DIR/install-mongo.sh &&   $BUILD_SCRIPTS_DIR/install-meteor.sh &&   $BUILD_SCRIPTS_DIR/build-meteor.sh &&   $BUILD_SCRIPTS_DIR/post-build-cleanup.sh' returned a non-zero code: 100`

1 Ответ

4 голосов
/ 14 мая 2019

Обязательно внимательно прочитайте учебник по метеорологической панели запуска, так как похоже, что вы пропустили пару пунктов.

Я заметил, что вы сказали, что ваш Dockerfile:

FROM debian:jessie

Этотвоя главная проблема.Это должно быть:

FROM jshimko/meteor-launchpad:latest

(или FROM jshimko/meteor-launchpad:some-specific-version).

Изменяя FROM, вы сделали остальную часть урока неуместной.Теперь вы просто создаете и запускаете базовый контейнер Debian, который ничего не делает.

К сожалению, похоже, что изображение meteor-launchpad повреждено.Он не обновлялся примерно 2 года и построен на старой версии Debian, чьи исходники были заархивированы - вот причина вашей ошибки сборки (см. https://github.com/debuerreotype/docker-debian-artifacts/issues/66).

Если вы действительно хотитеиспользуйте meteor-launchpad, я бы порекомендовал клонировать репозиторий и создать образ самостоятельно.

git clone https://github.com/jshimko/meteor-launchpad.git
cd meteor-launchpad
docker build -t jshimko/meteor-launchpad:latest .

После этого вы, вероятно, сможете следовать руководству, однако вам может потребоваться изменить FROM debian:jessie вmeteor-launchpad Dockerfile для использования более новой версии Debian. Это решение не подходит для производства, но я рекомендую его, поскольку похоже, что вы просто пытаетесь запустить учебный проект.

Я бы порекомендовал почитать концепции Docker, так как, похоже, что документы по метеоритной панели запуска предполагают, что вы с ними довольно хорошо знакомы. Вы можете начать с собственных учебных пособий Docker .


Кроме того, ваш docker-compose.yml файл не используется. Docker Compose - это альтернатива прямому вводу docker run команд; чтобы использовать его, выполните команду docker-compose up [-d] изкаталог, в котором находится файл YML.Используя только введенную вами команду docker run, вы запустите контейнер из созданного вами изображения, но не запустите контейнер монго.Вы должны начать это отдельно.

...