Skip to content

Instantly share code, notes, and snippets.

@MichalZalecki
Last active January 25, 2023 23:23
Show Gist options
  • Save MichalZalecki/4a87880bbe7a3a5428b5aebebaa5cd97 to your computer and use it in GitHub Desktop.
Save MichalZalecki/4a87880bbe7a3a5428b5aebebaa5cd97 to your computer and use it in GitHub Desktop.
Install oh-my-zsh in Docker
RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "zsh"]
RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh || true
# docker exec -it my-app-container /bin/zsh
@b232wang
Copy link

b232wang commented May 3, 2018

Hi, when I run docker, it's still bash shell, I need to enter zsh switch bash to zsh(oh-my-zsh). I added RUN chsh -s /usr/bin/zsh still not working. Any idea for that? Thanks.

@iamwrm
Copy link

iamwrm commented May 22, 2018

@b232wang either you make the linux default sh into zsh, or you use docker run -it imageName /bin/zsh

@yurumi
Copy link

yurumi commented Aug 30, 2018

@232wang Adding CMD ["zsh"] at the end of Dockerfile worked for me.

@rishispeets
Copy link

Good stuff! Couldn't figure out how to get it working. Thanks!

@drew-neely
Copy link

Any idea how to set a zsh theme in a docker container?

@eric-wilson
Copy link

eric-wilson commented Feb 10, 2019

you can set it before you do the installation.

# the user we're applying this too (otherwise it most likely install for root)
  USER $USER_NAME
  # terminal colors with xterm
  ENV TERM xterm
  # set the zsh theme 
  ENV ZSH_THEME agnoster

  # run the installation script  
  RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh || true

@eric-wilson
Copy link

The full script would look something like this:

FROM ubuntu:latest

ARG USER_NAME="dockerdude"
ARG USER_PASSWORD="p@$$w0d"

ENV USER_NAME $USER_NAME
ENV USER_PASSWORD $USER_PASSWORD
ENV CONTAINER_IMAGE_VER=v1.0.0

RUN echo $USER_NAME
RUN echo $USER_PASSWORD
RUN echo $CONTAINER_IMAGE_VER

# install the tooks i wish to use
RUN apt-get update && \
  apt-get install -y sudo \
  curl \
  git-core \
  gnupg \
  linuxbrew-wrapper \
  locales \
  nodejs \
  zsh \
  wget \
  nano \
  npm \
  fonts-powerline \
  # set up locale
  && locale-gen en_US.UTF-8 \
  # add a user (--disabled-password: the user won't be able to use the account until the password is set)
  && adduser --quiet --disabled-password --shell /bin/zsh --home /home/$USER_NAME --gecos "User" $USER_NAME \
  # update the password
  && echo "${USER_NAME}:${USER_PASSWORD}" | chpasswd && usermod -aG sudo $USER_NAME

  
  # the user we're applying this too (otherwise it most likely install for root)
  USER $USER_NAME
  # terminal colors with xterm
  ENV TERM xterm
  # set the zsh theme
  ENV ZSH_THEME agnoster

  # run the installation script  
  RUN wget https://github.com/robbyrussell/oh-my-zsh/raw/master/tools/install.sh -O - | zsh || true

  # start zsh
  CMD [ "zsh" ]


@roeniss
Copy link

roeniss commented May 8, 2021

Let me confess -- I had an issue same with @b232wang. Then suddenly I realized that I used dke alias all the time which is actually docker exec -it $1 bash and made by me. I got horrified by myself..

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment