Skip to content

Commit

Permalink
feat: add config for Dev containers (#102)
Browse files Browse the repository at this point in the history
* feat: add config for Dev containers

* fix: echoing software versions
  • Loading branch information
hugo-sid authored Aug 26, 2023
1 parent eb20024 commit fb4ebca
Show file tree
Hide file tree
Showing 2 changed files with 91 additions and 0 deletions.
34 changes: 34 additions & 0 deletions .devcontainer/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
# Set the Node.js version you want to use. You can change this in docker-compose.yml.
ARG NODE_VERSION=18
# Use the base image for Node.js development from Microsoft's repository.
FROM mcr.microsoft.com/vscode/devcontainers/javascript-node:0-${NODE_VERSION}

# Choose between 'hugo' (standard) or 'hugo_extended' (extended) version of Hugo.
ARG VARIANT=hugo_extended
# Choose either 'latest' or a specific version number for Hugo.
ARG VERSION=latest

# Install necessary tools and dependencies, and download Hugo.
# Download and extract the specified version of Hugo.
# Move Hugo executable to /usr/bin/ to make it globally accessible.
RUN apt-get update && apt-get install -y ca-certificates openssl git curl && \
rm -rf /var/lib/apt/lists/* && \
case ${VERSION} in \
latest) \
export VERSION=$(curl -s https://api.github.com/repos/gohugoio/hugo/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}') ;;\
esac && \
echo ${VERSION} && \
wget -O ${VERSION}.tar.gz https://github.com/gohugoio/hugo/releases/download/v${VERSION}/${VARIANT}_${VERSION}_Linux-64bit.tar.gz && \
tar xf ${VERSION}.tar.gz && \
mv hugo /usr/bin/hugo

# Expose the port that the Hugo development server will use.
EXPOSE 1313

# [Optional] Uncomment this section to install additional OS packages you may want.
#
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>

# [Optional] Uncomment if you want to install more global Node.js packages.
# RUN sudo -u node npm install -g <your-package-list-here>
57 changes: 57 additions & 0 deletions .devcontainer/devcontainer.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
// https://github.com/microsoft/vscode-dev-containers/tree/v0.202.3/containers/hugo
{
"name": "Hugo (Community)",
"build": {
"dockerfile": "Dockerfile",
"args": {
// Update VARIANT to pick hugo variant.
// Example variants: hugo, hugo_extended
// Rebuild the container if it already exists to update.
"VARIANT": "hugo_extended",
// Update VERSION to pick a specific hugo version.
// Example versions: latest, 0.73.0, 0,71.1
// Rebuild the container if it already exists to update.
"VERSION": "latest",
// Update NODE_VERSION to pick the Node.js version
"NODE_VERSION": "18",
}
},

"customizations": {
// Configure properties specific to VS Code.
// See https://containers.dev/supporting#visual-studio-code for more details
"vscode": {
// Set *default* container specific settings.json values on container create.
"settings": {
"html.format.templating": true,
},
// Add the IDs of extensions you want installed when the container is created.
"extensions": [
"tamasfe.even-better-toml",
"davidanson.vscode-markdownlint",
"budparr.language-hugo-vscode",
]
}
},

// Use 'forwardPorts' to make a list of ports inside the container available locally.
"forwardPorts": [
1313
],

// Use 'postAttachCommand' to run each time a tool has successfully attached to the container.
// Note that, postCreateCommand, postStartCommand, postAttachCommand, and initializeCommand all have 3 types:
// Array: Passed to the OS for execution without going through a shell
// String: Goes through a shell (it needs to be parsed into command and arguments)
// Object: All lifecycle scripts have been extended to support object types to allow for parallel execution
// See https://containers.dev/implementors/json_reference/#formatting-string-vs-array-properties for more details.
// The following line uses string format.
"postAttachCommand": "echo 🌲 Git version: $(git --version) && echo 🌲 Hugo version: $(hugo version) && echo 🌲 Node.js version: $(node -v) && echo 🌲 Golang version: $(go version)",

// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "node",
"features": {
"golang": "latest"
}
}

0 comments on commit fb4ebca

Please sign in to comment.