• Stars
    star
    703
  • Rank 62,096 (Top 2 %)
  • Language
    Shell
  • License
    MIT License
  • Created over 4 years ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Install Zsh, Oh-My-Zsh and plugins inside a Docker container with one line!

Oh My Zsh Installer for Docker

Last Release Build Downloads

This is a script to automate Oh My Zsh installation in development containers. Works with any image based on Alpine, Ubuntu, Debian or Amazon Linux.

The original goal was to simplify setting up zsh and Oh My Zsh in a Docker image for use with VSCode's Remote Containers extension, but it can be used whenever you need a simple way to install Oh My Zsh and its plugins in a Docker image

Usage

One line installation: add the following line in your Dockerfile:

# Default powerline10k theme, no plugins installed
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.1.5/zsh-in-docker.sh)"

Optional arguments:

  • -t <theme> - Selects the theme to be used. Options are available here. By default the script installs and uses Powerlevel10k, one of the "fastest and most awesome" themes for zsh. This is my recommended theme. If <theme> is a url, the script will try to install the theme using git clone.

  • -p <plugin> - Specifies a plugin to be configured in the generated .zshrc. List of bundled Oh My Zsh plugins are available here. If <plugin> is a url, the script will try to install the plugin using git clone.

  • -a <line> - You can add extra lines at the end of the generated .zshrc (but before loading oh-my-zsh) by passing one -a argument for each line you want to add. This is useful to customize plugins or themes. For example, if you want to enable case sensitive completion:

    RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.1.5/zsh-in-docker.sh)" -- \
    -a 'CASE_SENSITIVE="true"'
  • -x - Skip installation of dependencies: zsh, git, curl. If you are having issues with the script failing to install these dependencies due to sudo permissions, you can install them yourself in a prior step, and use this flag to make the script skip their installation

Examples:

# Uses "robbyrussell" theme (original Oh My Zsh theme), with no plugins
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.1.5/zsh-in-docker.sh)" -- \
    -t robbyrussell
# Uses "git", "ssh-agent" and "history-substring-search" bundled plugins
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.1.5/zsh-in-docker.sh)" -- \
    -p git -p ssh-agent -p 'history-substring-search' \
    -a 'bindkey "\$terminfo[kcuu1]" history-substring-search-up' \
    -a 'bindkey "\$terminfo[kcud1]" history-substring-search-down'
# Uses "Spaceship" theme with some customization. Uses some bundled plugins and installs some more from github
RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.1.5/zsh-in-docker.sh)" -- \
    -t https://github.com/denysdovhan/spaceship-prompt \
    -a 'SPACESHIP_PROMPT_ADD_NEWLINE="false"' \
    -a 'SPACESHIP_PROMPT_SEPARATE_LINE="false"' \
    -p git \
    -p ssh-agent \
    -p https://github.com/zsh-users/zsh-autosuggestions \
    -p https://github.com/zsh-users/zsh-completions

Notes

  • The examples above use wget, but if you prefer curl, just replace wget -O- with curl -L
  • This scripts requires git and curl to work properly. If your Dockerfile uses root as the main user, it should be fine, as the script will install them automatically. If you are using a non-root user, make sure to install the sudo package OR to install git and curl packages before calling this script. In case sudo access is an issue and you already have zsh, git and curl, you can use the option -x to skip the installations.
  • By default this script will install the powerlevel10k theme, as it is one of the fastest and most customizable themes available for zsh. If you want the default Oh My Zsh theme, use the option -t robbyrussell

Liked it?

If you like this script, feel free to thank me with a coffee (or a beer πŸ˜‰):

ko-fi

More Repositories

1

bring

Remote control library for the Apache Guacamole protocol (RDP/VNC)
Go
75
star
2

lookup

πŸ” Pure Go implementation of fast image search and simple OCR, focused on reading info from screenshots
Go
61
star
3

contentful-migrate

🐎 Schema migration tooling for Contentful, with state management
JavaScript
60
star
4

shiro-faces

JSF 2 TagLib for Apache Shiro. This taglib reimplements all original JSP tags as their Facelets equivalent, so they can be used in JSF projects.
Java
30
star
5

grails.sh

Bash script for selecting and calling the correct Grails version when you have more than one version installed
Shell
28
star
6

rest

Simple Generic REST controller
Go
8
star
7

bring-example

VNC/RDP desktop app - Sample usage of Bring library
Go
6
star
8

flowllm

Go framework for language model-powered applications with composability and chaining. Inspired by LangChain.
Go
5
star
9

gaelyk-spring

Example of how to use Spring Dependency Injection in a Gaelyk project. See the link below for a guided tutorial.
Java
3
star
10

fyne-vnc

Go
3
star
11

gomate

GoLang autocomplete on multiple words with Ledis (and possibly Redis)
Go
2
star
12

petshop-rails-ansible

Example on how to use Ansible to provision a full environment for the Petshop project
Shell
1
star
13

dcd.js

DCD ported to JavaScript, as a Node.JS console app
JavaScript
1
star
14

shiro-jsf2-test

Sample JSF2 project to test the Shiro Faces lib. Based on http://www.mkyong.com/jsf2/jsf-2-0-hello-world-example/
Java
1
star
15

ngago

WIP: Beego (GoLang) <-> ng-admin interface
Go
1
star
16

auto-environments

Elastic Environments in Source-Control with Ansible
Ruby
1
star