environment

This commit is contained in:
Jackson Delahunt 2019-01-17 21:26:06 +11:00
parent 0d92dffe49
commit 98821826ff
6 changed files with 73 additions and 32 deletions

View file

@ -97,6 +97,10 @@ 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
# Add program configurations
COPY config/tmuxinator $HOME/.config/tmuxinator
COPY config/zsh/.zshenv $HOME/.zshenv.desktop

View file

@ -1,29 +1,44 @@
# Jackson container volumes configuration
CONTAINER_USER=jackson
JACKSON_CONFIG_CHROME=/$CONTAINER_USER/home/.config/google-chrome
JACKSON_CONFIG_CODE=/$CONTAINER_USER/home/.config/Code
JACKSON_CONFIG_GITHUB=/$CONTAINER_USER/home/.config/hub
REPO_ROOT=$(dirname $(realpath $0))/..
# Give the container user ownership of the JACKSON_CONFIG_CHROME volume
# 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 JACKSON_CONFIG_CHROME:$JACKSON_CONFIG_CHROME \
--volume DESKTOP_ENVIRONMENT_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \
sabrehagen/desktop-environment:latest \
chown -R $CONTAINER_USER:$CONTAINER_USER $JACKSON_CONFIG_CHROME
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_YARN
# Give the container user ownership of the JACKSON_CONFIG_CODE volume
# Give the container user ownership of the DESKTOP_ENVIRONMENT_CACHE_CHROME volume
docker run \
--rm \
--user root \
--volume JACKSON_CONFIG_CODE:$JACKSON_CONFIG_CODE \
--volume DESKTOP_ENVIRONMENT_CACHE_CHROME:$DESKTOP_ENVIRONMENT_CACHE_CHROME \
sabrehagen/desktop-environment:latest \
chown -R $CONTAINER_USER:$CONTAINER_USER $JACKSON_CONFIG_CODE
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CACHE_CHROME
# Give the container user ownership of the JACKSON_CONFIG_GITHUB volume
# Give the container user ownership of the DESKTOP_ENVIRONMENT_CONFIG_CHROME volume
docker run \
--rm \
--user root \
--volume JACKSON_CONFIG_GITHUB:$JACKSON_CONFIG_GITHUB \
--volume DESKTOP_ENVIRONMENT_CONFIG_CHROME:$DESKTOP_ENVIRONMENT_CONFIG_CHROME \
sabrehagen/desktop-environment:latest \
chown -R $CONTAINER_USER:$CONTAINER_USER $JACKSON_CONFIG_GITHUB
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CONFIG_CHROME
# Give the container user ownership of the DESKTOP_ENVIRONMENT_CONFIG_CODE volume
docker run \
--rm \
--user root \
--volume DESKTOP_ENVIRONMENT_CONFIG_CODE:$DESKTOP_ENVIRONMENT_CONFIG_CODE \
sabrehagen/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
docker run \
--rm \
--user root \
--volume DESKTOP_ENVIRONMENT_CONFIG_GITHUB:$DESKTOP_ENVIRONMENT_CONFIG_GITHUB \
sabrehagen/desktop-environment:latest \
chown -R $DESKTOP_ENVIRONMENT_USER:$DESKTOP_ENVIRONMENT_USER $DESKTOP_ENVIRONMENT_CONFIG_GITHUB

View file

@ -4,6 +4,6 @@ REPO_ROOT=$(dirname $(realpath $0))/..
sh $REPO_ROOT/scripts/clean.sh
# Remove volumes that can be recreated from scratch, but require manual configuration in app
docker volume rm JACKSON_CONFIG_CODE
docker volume rm JACKSON_CONFIG_CHROME
docker volume rm JACKSON_CONFIG_GITHUB
docker volume rm DESKTOP_ENVIRONMENT_CONFIG_CODE
docker volume rm DESKTOP_ENVIRONMENT_CONFIG_CHROME
docker volume rm DESKTOP_ENVIRONMENT_CONFIG_GITHUB

View file

@ -4,4 +4,4 @@ REPO_ROOT=$(dirname $(realpath $0))/..
sh $REPO_ROOT/scripts/stop.sh 2>/dev/null
# Remove volumes that can be recreated from scratch, directly from the container filesystem
docker volume rm JACKSON_HOME
docker volume rm DESKTOP_ENVIRONMENT_HOME

16
scripts/environment.sh Executable file
View file

@ -0,0 +1,16 @@
# Desktop environment container user
DESKTOP_ENVIRONMENT_USER=jackson
DESKTOP_ENVIRONMENT_HOME=/$DESKTOP_ENVIRONMENT_USER/home
# Desktop environment configuration
echo DESKTOP_ENVIRONMENT_HOME=$DESKTOP_ENVIRONMENT_HOME
echo DESKTOP_ENVIRONMENT_USER=$DESKTOP_ENVIRONMENT_USER
# Desktop environment cache volumes
echo DESKTOP_ENVIRONMENT_CACHE_CHROME=$DESKTOP_ENVIRONMENT_HOME/.cache/google-chrome
echo DESKTOP_ENVIRONMENT_CACHE_YARN=$DESKTOP_ENVIRONMENT_HOME/.cache/yarn
# Desktop environment configuration volumes
echo DESKTOP_ENVIRONMENT_CONFIG_CHROME=$DESKTOP_ENVIRONMENT_HOME/.config/google-chrome
echo DESKTOP_ENVIRONMENT_CONFIG_CODE=$DESKTOP_ENVIRONMENT_HOME/.config/Code
echo DESKTOP_ENVIRONMENT_CONFIG_GITHUB=$DESKTOP_ENVIRONMENT_HOME/.config/github/hub

View file

@ -1,5 +1,7 @@
REPO_ROOT=$(dirname $(realpath $0))/..
JACKSON_HOME=/jackson/home
# Export development environment shell configuration
export $(sh $REPO_ROOT/scripts/environment.sh)
# Ensure the container user has ownership of the volumes before starting
sh $REPO_ROOT/scripts/bootstrap-volumes.sh
@ -12,7 +14,7 @@ docker run \
--device /dev/usb \
--device /dev/bus/usb \
--env DISPLAY \
--env SSH_AUTH_SOCK=$JACKSON_HOME/.ssh/auth.sock \
--env SSH_AUTH_SOCK=$DESKTOP_ENVIRONMENT_HOME/.ssh/auth.sock \
--env STEMN_GIT_EMAIL="$(git config --get user.email)" \
--env STEMN_GIT_NAME="$(git config --get user.name)" \
--env STEMN_TMUX_SESSION=desktop-session \
@ -27,20 +29,24 @@ docker run \
--volume /dev/shm:/dev/shm \
--volume /etc/hosts:/etc/hosts \
--volume /etc/localtime:/etc/localtime:ro \
--volume /run/systemd:/run/systemd \
--volume /tmp/.X11-unix:/tmp/.X11-unix \
--volume /var/run/dbus:/var/run/dbus \
--volume /var/run/docker.sock:/var/run/docker.sock \
--volume $HOME/.ssh:$JACKSON_HOME/.ssh \
--volume $HOME/notes:$JACKSON_HOME/notes \
--volume $HOME/repositories:$JACKSON_HOME/repositories \
--volume $HOME/Downloads:$JACKSON_HOME/Downloads \
--volume $HOME/Pictures:$JACKSON_HOME/Pictures \
--volume $HOME/Videos:$JACKSON_HOME/Videos \
--volume ${SSH_AUTH_SOCK-$HOME/.ssh/auth.sock}:$JACKSON_HOME/.ssh/auth.sock \
--volume JACKSON_CONFIG_CHROME:$JACKSON_HOME/.config/google-chrome \
--volume JACKSON_CONFIG_CODE:$JACKSON_HOME/.config/Code \
--volume JACKSON_CONFIG_GITHUB:$JACKSON_HOME/.config/hub \
--volume JACKSON_HOME:$JACKSON_HOME \
--workdir $JACKSON_HOME \
--volume $HOME/.ssh:$DESKTOP_ENVIRONMENT_HOME/.ssh \
--volume $HOME/notes:$DESKTOP_ENVIRONMENT_HOME/notes \
--volume $HOME/repositories:$DESKTOP_ENVIRONMENT_HOME/repositories \
--volume $HOME/Downloads:$DESKTOP_ENVIRONMENT_HOME/Downloads \
--volume $HOME/Pictures:$DESKTOP_ENVIRONMENT_HOME/Pictures \
--volume $HOME/Videos:$DESKTOP_ENVIRONMENT_HOME/Videos \
--volume ${SSH_AUTH_SOCK-$HOME/.ssh/auth.sock}:$DESKTOP_ENVIRONMENT_HOME/.ssh/auth.sock \
--volume DESKTOP_ENVIRONMENT_CACHE_YARN:$DESKTOP_ENVIRONMENT_CACHE_YARN \
--volume DESKTOP_ENVIRONMENT_CACHE_CHROME:$DESKTOP_ENVIRONMENT_CACHE_CHROME \
--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
# Wait until the container is running before proceeding