-
-
Notifications
You must be signed in to change notification settings - Fork 189
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add config for Dev containers (#102)
* feat: add config for Dev containers * fix: echoing software versions
- Loading branch information
Showing
2 changed files
with
91 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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" | ||
} | ||
} |