Как установить homebrew на Ubuntu внутри контейнера Docker - PullRequest
1 голос
/ 08 октября 2019

Когда я пытаюсь установить homebrew в Ubuntu 18.04

# Dockerfile
FROM ubuntu:18.04

RUN apt-get update && apt-get install build-essential curl file git -y
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

получаю ошибки:

==> Добавьте Ruby в PATH, запустив:PATH = / root / .linuxbrew / Homebrew / Библиотека / Homebrew / vendor / portable-ruby / current / bin: $ PATH Не запускайте это как root!

1 Ответ

1 голос
/ 08 октября 2019

Есть ли причина, по которой вы не можете использовать официальное изображение (docker pull linuxbrew/linuxbrew)? Он основан на Ubuntu 16.04 / Xenial.

Если вам необходимо использовать Bionic (18.04), правильным способом установки homebrew будет следовать инструкциям официального Dockerfile .

Но чтобы ваш Dockerfile работал, вам нужно установить ruby, создать пользователя без полномочий root и выполнить сценарий установки от имени этого пользователя. Таким образом,

FROM ubuntu:18.04

RUN apt-get update && \
    apt-get install build-essential curl file git ruby-full locales --no-install-recommends -y && \
    rm -rf /var/lib/apt/lists/*

RUN localedef -i en_US -f UTF-8 en_US.UTF-8

RUN useradd -m -s /bin/bash linuxbrew && \
    echo 'linuxbrew ALL=(ALL) NOPASSWD:ALL' >>/etc/sudoers

USER linuxbrew
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

USER root
ENV PATH="/home/linuxbrew/.linuxbrew/bin:${PATH}"

PS: я добавил --no-install-recommends, чтобы игнорировать необязательные зависимости, и rm -rf /var/lib/apt/lists/*, чтобы удалить apt-get остатки, тем самым уменьшая размер изображения. Кроме того, locales добавляется для установки UTF-8 или brew выдаст предупреждение при запуске команды.

...