невозможно запустить докер контейнер с изображением ember.js, node_modules пуст - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь запустить ember.js в док-контейнере на основе образа danlynn / ember-cli image

Пробовал разные версии Dockerfile и docker compose.yml, но я всегда заканчиваю командой docker-compose up, жалуясь на следующее:

node_modules выглядит пустым, вам может потребоваться запустить npm install

Изображение и контейнер созданы, но контейнер не запустится.

Я новичок в мире докеров, поэтому любая помощь будет принята с благодарностью!

Я предполагаю, что мне нужно запустить npm install, чтобы ошибка исчезла, но я добавил ее в Dockerfile, чтобы он запускался при сборке образа, но, похоже, это не помогло.

Вот мое содержимое Dockerfile:

FROM danlynn/ember-cli
WORKDIR /code
COPY package.json /code
COPY bower.json /code
RUN ember init
RUN ember init --yarn
RUN bower --allow-root install
RUN npm install
COPY . /code
CMD ["ember", "serve"]

и файл docker-compose.yml:

version: "3"
services:
  ember_gui:
    build: .
    container_name: ember_dev
    volumes:
      - .:/code
    ports:
       - "4200:4200"
       - "7020:7020"
       - "5779:5779"

Наконец, вот package.json на всякий случай

{
  "name": "EmberUI",
  "version": "0.0.1",
  "description": "Test app GUI",
  "main": "index.js",
  "author": "Testing",
  "license": "MIT",
  "dependencies": {
    "chai": "^4.1.2",
    "mocha": "^5.2.0"
  }
}

1 Ответ

0 голосов
/ 05 сентября 2018

Хорошо, после долгих экспериментов я смог запустить экземпляр ember в докере на основе образа danlynn / ember-cli

Извлеченные уроки:

1.- Образ, по-видимому, настроен для запуска в каталоге «myApp» в контейнере. Я пытался определить каталог «code» для размещения всех файлов, но, видимо, это действительно не понравилось.

2.- Образ должен быть инициализирован после его установки, запустив ember init в службе. Не уверен, почему помещение команды в Dockerfile не сработало, но вам нужно просто выполнить следующую команду, прежде чем запускать контейнер с помощью docker-compose up:

docker-compose run --rm ember_gui ember init

где ember_gui - имя службы ember согласно файлу docker-compose.yml.

3.- Инициализация ember создаст много файлов и подкаталогов, поэтому убедитесь, что вы запустили его в каталоге, в котором больше ничего нет.

В любом случае, вот содержимое моего docker-compose.yml на тот случай, если оно пригодится кому-либо еще (обратите внимание, что я больше не использую отдельный Dockerfile и вместо этого использую изображение напрямую):

version: "3"

services:
  ember_gui:
    image: danlynn/ember-cli
    container_name: ember_dev
    volumes:
      - .:/myapp
    command: ember server
    ports:
      - "4200:4200"
      - "7020:7020"
      - "7357:7357"

Чтобы запустить его в первый раз:

docker-compose run --rm ember_gui ember init
docker-compose up

После этого вы можете просто запустить

docker-compose up
...