Изображения Docker Alpine включают npm? - PullRequest
0 голосов
/ 25 марта 2019

Я настраиваю Docker-контейнер для объединения моих ресурсов внешнего интерфейса с помощью npm и Webpack. Я хотел бы использовать облегченное изображение Docker для этой цели. Изображения из https://hub.docker.com/_/alpine поставляются с npm?

внутри моего файла docker-compose.yml, который у меня есть

services:
    assets:
        image: alpine:3.9.2
        working_dir: /home/node/app/assets
        volumes:
        - ./src/app/assets:/home/alpine/app/assets/

    command: "npm run bundle"

Ожидается, что npm run bundle будет успешно запущен

Я получил ОШИБКА: для активов Невозможно запустить ресурсы службы: сбой при создании OCI: container_linux.go: 344: запуск процесса контейнера вызвал "exec: \" npm \ ": исполняемый файл не найден в $ PATH": неизвестно

1 Ответ

1 голос
/ 25 марта 2019

В докере Alpine linux спроектирован как минимальное базовое изображение, чтобы сохранить небольшой размер изображения и уменьшить его поверхность атаки. Дополнительное программное обеспечение, такое как nodejs (которое содержит npm), требует ручной установки с использованием соответствующих пакетов apk , таких как apk add nodejs. Возможно, необходимо сначала обновить пакеты, используя apk update.

способ стыковки

Вы легко можете написать Dockerfile и добавить это как RUN операторы. Но предпочтительным способом является поиск в док-хабе уже существующих изображений, которые соответствуют вашим потребностям. В случае npm вы найдете официальное изображение nodejs , где вы просто используете тег вашей целевой версии nodejs, например 10-*, для последних lts.

Здесь вы можете выбирать различные базовые изображения. Например, вы можете использовать 10-jessie или что хотите: 10-alpine. У этого есть только 24 МБ, где 10-stretch потребует 346 МБ памяти.

Чтобы использовать его, измените image: alpine:3.9.2 на image: node: 10-alpine в вашем файле docker-compose.yml.

...