如何在 Docker 容器内的 Ubuntu 上安装自制软件
How to install homebrew on Ubuntu inside Docker container
当我在 Ubuntu 18.04
上尝试 install 自制软件时
# 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)"
出现错误:
==> Add Ruby to your PATH by running: PATH=/root/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin:$PATH
Don't run this as root!
您有什么理由不能使用 official image (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
将在您 运行 命令时发出警告。
新的正确方法是:
RUN apt-get update && \
apt-get install -y -q --allow-unauthenticated \
git \
sudo
RUN useradd -m -s /bin/zsh linuxbrew && \
usermod -aG sudo linuxbrew && \
mkdir -p /home/linuxbrew/.linuxbrew && \
chown -R linuxbrew: /home/linuxbrew/.linuxbrew
USER linuxbrew
RUN /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
加布里埃尔的回答大部分对我有用,但漏掉了一步。我需要 chown
/home/linuxbrew/.linuxbrew
文件夹给用户 运行 Homebrew:
USER root
RUN chown -R $CONTAINER_USER: /home/linuxbrew/.linuxbrew
当我在 Ubuntu 18.04
上尝试 install 自制软件时# 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)"
出现错误:
==> Add Ruby to your PATH by running: PATH=/root/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin:$PATH Don't run this as root!
您有什么理由不能使用 official image (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
将在您 运行 命令时发出警告。
新的正确方法是:
RUN apt-get update && \
apt-get install -y -q --allow-unauthenticated \
git \
sudo
RUN useradd -m -s /bin/zsh linuxbrew && \
usermod -aG sudo linuxbrew && \
mkdir -p /home/linuxbrew/.linuxbrew && \
chown -R linuxbrew: /home/linuxbrew/.linuxbrew
USER linuxbrew
RUN /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
加布里埃尔的回答大部分对我有用,但漏掉了一步。我需要 chown
/home/linuxbrew/.linuxbrew
文件夹给用户 运行 Homebrew:
USER root
RUN chown -R $CONTAINER_USER: /home/linuxbrew/.linuxbrew