From 9739246a89c8c0806606e63a9c3ffc58277264f9 Mon Sep 17 00:00:00 2001 From: Mark Bennett Date: Thu, 20 Feb 2020 10:46:16 -0700 Subject: [PATCH] Add Visual Studio Code Development Container (#8016) Merge pull request 8016 --- .devcontainer/Dockerfile | 55 +++++++++++++++++++++++++++++++++ .devcontainer/devcontainer.json | 26 ++++++++++++++++ docs/_docs/contributing.md | 4 +++ docs/_docs/installation.md | 2 +- 4 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 00000000..d79e1e70 --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,55 @@ +#------------------------------------------------------------------------------------------------------------- +# Copyright (c) Microsoft Corporation. All rights reserved. +# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information. +#------------------------------------------------------------------------------------------------------------- + +FROM ruby:2 + +# Avoid warnings by switching to noninteractive +ENV DEBIAN_FRONTEND=noninteractive + +# This Dockerfile adds a non-root user with sudo access. Use the "remoteUser" +# property in devcontainer.json to use it. On Linux, the container user's GID/UIDs +# will be updated to match your local UID/GID (when using the dockerFile property). +# See https://aka.ms/vscode-remote/containers/non-root-user for details. +ARG USERNAME=vscode +ARG USER_UID=1000 +ARG USER_GID=$USER_UID + +# Configure apt and install packages +RUN apt-get update \ + && apt-get -y install --no-install-recommends apt-utils dialog locales 2>&1 \ + # Verify git, process tools installed + && apt-get -y install git openssh-client iproute2 procps lsb-release \ + # + # Install ruby-debug-ide and debase + && gem install ruby-debug-ide \ + && gem install debase \ + # + # Install node.js + && apt-get -y install curl software-properties-common \ + && curl -sL https://deb.nodesource.com/setup_13.x | bash - \ + && apt-get -y install nodejs \ + # + # Create a non-root user to use if preferred - see https://aka.ms/vscode-remote/containers/non-root-user. + && groupadd --gid $USER_GID $USERNAME \ + && useradd -s /bin/bash --uid $USER_UID --gid $USER_GID -m $USERNAME \ + # [Optional] Add sudo support for the non-root user + && apt-get install -y sudo \ + && echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME\ + && chmod 0440 /etc/sudoers.d/$USERNAME \ + # + # Clean up + && apt-get autoremove -y \ + && apt-get clean -y \ + && rm -rf /var/lib/apt/lists/* + +# Set the locale +RUN sed -i -e 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ + dpkg-reconfigure --frontend=noninteractive locales && \ + update-locale LANG=en_US.UTF-8 + +ENV LANG en_US.UTF-8 + +# Switch back to dialog for any ad-hoc use of apt-get +ENV DEBIAN_FRONTEND=dialog diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 00000000..6b449c63 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,26 @@ +// For format details, see https://aka.ms/vscode-remote/devcontainer.json or this file's README at: +// https://github.com/microsoft/vscode-dev-containers/tree/v0.101.1/containers/ruby-2 +{ + "name": "Ruby 2", + "dockerFile": "Dockerfile", + + // Set *default* container specific settings.json values on container create. + "settings": { + "terminal.integrated.shell.linux": "/bin/bash" + }, + + // Add the IDs of extensions you want installed when the container is created. + "extensions": [ + "rebornix.Ruby" + ] + + // Use 'forwardPorts' to make a list of ports inside the container available locally. + // "forwardPorts": [], + + // Use 'postCreateCommand' to run commands after the container is created. + "postCreateCommand": "bundle install", + + // Uncomment to connect as a non-root user. See https://aka.ms/vscode-remote/containers/non-root. + // "remoteUser": "vscode" + +} \ No newline at end of file diff --git a/docs/_docs/contributing.md b/docs/_docs/contributing.md index 93f1674c..d22dc861 100644 --- a/docs/_docs/contributing.md +++ b/docs/_docs/contributing.md @@ -152,6 +152,10 @@ script/cucumber features/blah.feature Both `script/test` and `script/cucumber` can be run without arguments to run its entire respective suite. +## Visual Studio Code Development Container + +If you've got [Visual Studio Code](https://code.visualstudio.com/) with the [Remote Development Extension Pack](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.vscode-remote-extensionpack) installed then simply opening this repository in Visual Studio Code and following the prompts to "Re-open In A Development Container" will get you setup and ready to go with a fresh environment with all the requirements installed. + ## A thank you Thanks! Hacking on Jekyll should be fun. If you find any of this hard to figure out, let us know so we can improve our process or documentation! diff --git a/docs/_docs/installation.md b/docs/_docs/installation.md index 22c60276..70c25174 100644 --- a/docs/_docs/installation.md +++ b/docs/_docs/installation.md @@ -19,4 +19,4 @@ For detailed install instructions have a look at the guide for your operating sy * [macOS](/docs/installation/macos/) * [Ubuntu Linux](/docs/installation/ubuntu/) * [Other Linux distros](/docs/installation/other-linux) -* [Windows](/docs/installation/windows/) +* [Windows](/docs/installation/windows/) \ No newline at end of file