This repository provides a Docker image running cdr/code-server preconfigued with Arista Validated Design environment.
Docker image: avdteam/vscode
# Run avdteam/vscode container
$ docker run --rm -d -v /var/run/docker.sock:/var/run/docker.sock -p 8080:8080 avdteam/vscode:latest
# Connect to your browser
$ open http://127.0.0.1:8080As it is for development and local use only, there is no password protection ! Never expose container to untrust or Internet.
AVD_MODE: If set todemo, container will install AVD content to test it fromget.avd.sh.- Supported mode:
['demo', 'toi']
- Supported mode:
AVD_PASSWORD: Allow user to set a password to use for VScode authentication. If not set, access is not protected by any password.AVD_GIT_USER: Username to configure in.gitconfigfile.- Can be set with
AVD_GIT_USER=$(git config --get user.name)
- Can be set with
AVD_GIT_EMAIL: Email to configure in.gitconfigfile.- Can be set with
AVD_GIT_EMAIL=$(git config --get user.email)
- Can be set with
AVD_USER_EXTENSIONS_FILE: Allow user to installed additional VScode extensionsAVD_USER_REPOS: Path to a text file in your container with a list of repository to clone (1 repository per line)AVD_USER_SCRIPT: Path to a shell script to execute during entrypoint execution.
These settings must be used to mount and edit file from your physical host.
AVD_UID: set uid for avd user in container.AVD_GID: set gid for avd user in container.
Current container has docker installed and can be used in a Docker-in-Docker approach. To run docker, you must share your docker socket with container:
Docker Socket on Linux / Macos
-v /var/run/docker.sock:/var/run/docker.sockDocker Socket on Windows
-v //var/run/docker.sock:/var/run/docker.sockdocker run --rm -it -d \
-e AVD_MODE=demo \
-e AVD_GIT_USER=titom73 \
-e AVD_GIT_EMAIL=tom@inetsix.net \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 8080:8080 \
avdteam/vscode:latestdocker run --rm -it -d \
-e AVD_GIT_USER=titom73 \
-e AVD_GIT_EMAIL=tom@inetsix.net \
-v ${PWD}/your-local-work:/home/avd/arista-ansible \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 8080:8080 \
avdteam/vscode:latestdocker run --rm -it -d \
-e AVD_USER_EXTENSIONS_FILE=my_settings/user-extensions.txt \
-e AVD_GIT_USER=titom73 \
-e AVD_GIT_EMAIL=tom@inetsix.net \
-v ${PATH_TO_FOLDER_WITH_EXT_FILE}/tests:/home/avd/my_settings \
-v ${PWD}/your-local-work:/home/avd/arista-ansible \
-v /var/run/docker.sock:/var/run/docker.sock \
-p 8080:8080 \
avdteam/vscode:latestEasy to manage TOI and ATD with docker-compose command
# Start single node stack
$ docker-compose up -d
Creating network "avd-vscode_default" with the default driver
Creating avd-vscode_avd-coder_1 ... done
# get dynamic port mapping
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------
avd-vscode_avd-coder_1 /bin/entrypoint.sh Up 0.0.0.0:55000->8080/tcp
# Scale up environment
$ docker-compose --scale avd-coder=3
Creating avd-vscode_avd-coder_2 ... done
Creating avd-vscode_avd-coder_3 ... done
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------
avd-vscode_avd-coder_1 /bin/entrypoint.sh Up 0.0.0.0:55000->8080/tcp
avd-vscode_avd-coder_2 /bin/entrypoint.sh Up 0.0.0.0:55002->8080/tcp
avd-vscode_avd-coder_3 /bin/entrypoint.sh Up 0.0.0.0:55001->8080/tcp$ kubectl apply -f k8s-deployment.yml
deployment.apps/avd-coder-deployment created
service/avd-coder-service created
$ kubectl get service
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
avd-coder-service NodePort 10.152.183.196 <none> 8080:31081/TCP 5s# AVD VScode image name
export AVD_VSCODE_IMAGE=avdteam/vscode
# Version of AVD VScode image to use
export AVD_VSCODE_VERSION=latest
# Vscode container command line to start
base_avd_vsc() {
container_id=$(docker run -P -it --rm -d \
-e AVD_GIT_USER="$(git config --get user.name)" \
-e AVD_GIT_EMAIL="$(git config --get user.email)" \
-v /var/run/docker.sock:/var/run/docker.sock \
-v ${PWD}/:/home/avd/local_projects \
${AVD_VSCODE_IMAGE}:${AVD_VSCODE_VERSION})
echo "Container ${container_id} has been created ..."
export mapped_port=$(docker inspect --format="{{(index (index .NetworkSettings.Ports \"8080/tcp\") 0).HostPort}}" ${container_id})
echo "-> Open http://127.0.0.1:${mapped_port}/?folder=/home/avd"
}
# Stop all VScode isntances
avd-vsc-stop() {
docker ps -a | grep -e "${AVD_VSCODE_IMAGE}" | gawk '{print $1}' | xargs docker stop
}
# Alias to start a new instance from where you are in shell
alias avd-vsc='base_avd_vsc'
# Update image from docker-hub
alias avd-vsc-update='docker pull ${AVD_VSCODE_IMAGE}:${AVD_VSCODE_VERSION}'Project is published under Apache 2.0 License
