This commit is contained in:
Jackson Delahunt 2019-01-25 13:51:56 +11:00
commit 7c870af26a
8 changed files with 64 additions and 28 deletions

View file

@ -24,6 +24,13 @@ RUN usermod \
--login $USER \
$BASE_USER
# Install user utilities
RUN apt install --yes \
software-properties-common \
vcsh \
vlc \
xinput
# Install chrome
RUN apt update && apt install --yes \
apt-transport-https \
@ -63,11 +70,6 @@ RUN wget -O rescuetime.deb -nv https://www.rescuetime.com/installers/rescuetime_
dpkg -i rescuetime.deb || apt --fix-broken --yes install && \
rm rescuetime.deb
# Install user utilities
RUN apt install --yes \
vcsh \
xinput
# Enable password-less sudo for user
RUN echo "$USER ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
@ -95,11 +97,8 @@ RUN zsh -c "cp -r /$BASE_USER/home/{.gitconfig,.motd,.tmux.conf,.zshenv,.zshrc}
RUN alias https-to-git="sed 's;https://github.com/\(.*\);git@github.com:\1.git;'"
RUN vcsh clone https://github.com/sabrehagen/dotfiles-alacritty && \
vcsh clone https://github.com/sabrehagen/dotfiles-code && \
vcsh clone https://github.com/sabrehagen/dotfiles-scripts
# Install yarn utilities
RUN yarn global add \
clipboard-cli
vcsh clone https://github.com/sabrehagen/dotfiles-scripts && \
vcsh clone https://github.com/sabrehagen/dotfiles-vlc
# Add program configurations
COPY config/tmuxinator $HOME/.config/tmuxinator

9
README.md Normal file
View file

@ -0,0 +1,9 @@
# Desktop Environment
A full desktop environment packaged into a Docker container.
## Applications
- Google Chrome
- RescueTime
- VS Code

View file

@ -4,8 +4,13 @@ if [ $USER != "root" ]; then
exit 1
fi
REPO_ROOT=$(dirname $(realpath $0))/..
# Export development environment shell configuration
export $(sh $REPO_ROOT/scripts/environment.sh)
# Host user configuration
HOST_USER=jackson
HOST_USER=$DESKTOP_ENVIRONMENT_USER
HOST_USER_ID=1000
HOST_HOME=/$HOST_USER/home
@ -31,7 +36,8 @@ xhost local:docker
# Install utilities
apt update && apt install --yes && \
docker.io && \
docker.io \
ksshaskpass \
vcsh
# Enable password-less sudo for the host user
@ -52,6 +58,9 @@ wget -O alacritty.deb https://github.com/jwilm/alacritty/releases/download/v0.2.
dpkg -i alacritty.deb && \
rm alacritty.deb
# Start the desktop environment on system start
echo "@reboot $HOST_HOME/repositories/$DESKTOP_ENVIRONMENT_REGISTRY/desktop-environment/scripts/start.sh" >> /etc/crontab
# Take ownership of all files under the user's directory
chown $HOST_USER:$HOST_USER /$HOST_USER

View file

@ -3,28 +3,36 @@ REPO_ROOT=$(dirname $(realpath $0))/..
# Export development environment shell configuration
export $(sh $REPO_ROOT/scripts/environment.sh)
# Give the container user ownership of the DESKTOP_ENVIRONMENT_CACHE_YARN volume
docker run \
--rm \
--user root \
--volume DESKTOP_ENVIRONMENT_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \
sabrehagen/desktop-environment:latest \
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_YARN
# Give the container user ownership of the DESKTOP_ENVIRONMENT_CACHE_CHROME volume
docker run \
--rm \
--user root \
--volume DESKTOP_ENVIRONMENT_CACHE_CHROME:$DESKTOP_ENVIRONMENT_CACHE_CHROME \
sabrehagen/desktop-environment:latest \
$DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_CHROME
# Give the container user ownership of the DESKTOP_ENVIRONMENT_CACHE_YARN volume
docker run \
--rm \
--user root \
--volume DESKTOP_ENVIRONMENT_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \
$DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_YARN
# Give the container user ownership of the DESKTOP_ENVIRONMENT_CACHE_ZSH volume
docker run \
--rm \
--user root \
--volume DESKTOP_ENVIRONMENT_CACHE_ZSH:$DESKTOP_ENVIRONMENT_CACHE_ZSH \
$DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_ZSH
# Give the container user ownership of the DESKTOP_ENVIRONMENT_CONFIG_CHROME volume
docker run \
--rm \
--user root \
--volume DESKTOP_ENVIRONMENT_CONFIG_CHROME:$DESKTOP_ENVIRONMENT_CONFIG_CHROME \
sabrehagen/desktop-environment:latest \
$DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CONFIG_CHROME
# Give the container user ownership of the DESKTOP_ENVIRONMENT_CONFIG_CODE volume
@ -32,7 +40,7 @@ docker run \
--rm \
--user root \
--volume DESKTOP_ENVIRONMENT_CONFIG_CODE:$DESKTOP_ENVIRONMENT_CONFIG_CODE \
sabrehagen/desktop-environment:latest \
$DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CONFIG_CODE
# Give the container user ownership of the DESKTOP_ENVIRONMENT_CONFIG_GITHUB volume
@ -40,5 +48,5 @@ docker run \
--rm \
--user root \
--volume DESKTOP_ENVIRONMENT_CONFIG_GITHUB:$DESKTOP_ENVIRONMENT_CONFIG_GITHUB \
sabrehagen/desktop-environment:latest \
$DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CONFIG_GITHUB

View file

@ -1,7 +1,10 @@
REPO_ROOT=$(dirname $(realpath $0))/..
# Export development environment shell configuration
export $(sh $REPO_ROOT/scripts/environment.sh)
docker build \
--build-arg CONTAINER_BUILD_DATE=$(date +%s) \
--build-arg CONTAINER_GIT_SHA=$(git rev-parse HEAD | cut -b 1-7) \
--tag sabrehagen/desktop-environment:latest \
--tag $DESKTOP_ENVIRONMENT_USER/desktop-environment:latest \
$REPO_ROOT

View file

@ -1,15 +1,18 @@
# Desktop environment container user
DESKTOP_ENVIRONMENT_USER=jackson
DESKTOP_ENVIRONMENT_HOME=/$DESKTOP_ENVIRONMENT_USER/home
DESKTOP_ENVIRONMENT_REGISTRY=sabrehagen
# Desktop environment configuration
echo DESKTOP_ENVIRONMENT_HOME=$DESKTOP_ENVIRONMENT_HOME
echo DESKTOP_ENVIRONMENT_USER=$DESKTOP_ENVIRONMENT_USER
echo DESKTOP_ENVIRONMENT_REGISTRY=$DESKTOP_ENVIRONMENT_REGISTRY
# Desktop environment cache volumes
echo DESKTOP_ENVIRONMENT_CACHE_CHROME=$DESKTOP_ENVIRONMENT_HOME/.cache/google-chrome
echo DESKTOP_ENVIRONMENT_CACHE_CODE=$DESKTOP_ENVIRONMENT_HOME/.vscode
echo DESKTOP_ENVIRONMENT_CACHE_YARN=$DESKTOP_ENVIRONMENT_HOME/.cache/yarn
echo DESKTOP_ENVIRONMENT_CACHE_ZSH=$DESKTOP_ENVIRONMENT_HOME/.cache/zsh
# Desktop environment configuration volumes
echo DESKTOP_ENVIRONMENT_CONFIG_CHROME=$DESKTOP_ENVIRONMENT_HOME/.config/google-chrome

View file

@ -1 +1,6 @@
docker push sabrehagen/desktop-environment:latest
REPO_ROOT=$(dirname $(realpath $0))/..
# Export development environment shell configuration
export $(sh $REPO_ROOT/scripts/environment.sh)
docker push $DESKTOP_ENVIRONMENT_REGISTRY/desktop-environment:latest

View file

@ -10,7 +10,6 @@ docker run \
--detach \
--device /dev/snd \
--device /dev/dri \
--device /dev/video0 \
--device /dev/usb \
--device /dev/bus/usb \
--env DISPLAY \
@ -44,12 +43,13 @@ docker run \
--volume DESKTOP_ENVIRONMENT_CACHE_CHROME:$DESKTOP_ENVIRONMENT_CACHE_CHROME \
--volume DESKTOP_ENVIRONMENT_CACHE_CODE:$DESKTOP_ENVIRONMENT_CACHE_CODE \
--volume DESKTOP_ENVIRONMENT_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \
--volume DESKTOP_ENVIRONMENT_CACHE_ZSH:$DESKTOP_ENVIRONMENT_CACHE_ZSH \
--volume DESKTOP_ENVIRONMENT_CONFIG_CHROME:$DESKTOP_ENVIRONMENT_CONFIG_CHROME \
--volume DESKTOP_ENVIRONMENT_CONFIG_CODE:$DESKTOP_ENVIRONMENT_CONFIG_CODE \
--volume DESKTOP_ENVIRONMENT_CONFIG_GITHUB:$DESKTOP_ENVIRONMENT_CONFIG_GITHUB \
--volume DESKTOP_ENVIRONMENT_HOME:$DESKTOP_ENVIRONMENT_HOME \
--workdir $DESKTOP_ENVIRONMENT_HOME \
sabrehagen/desktop-environment:latest
$DESKTOP_ENVIRONMENT_REGISTRY/desktop-environment:latest
# Wait until the container is running before proceeding
until docker inspect desktop-environment | grep Status | grep -m 1 running >/dev/null; do sleep 1; done