Skip to content

Commit a58e716

Browse files
authored
Merge pull request #49 from rofrano/add-devcontainer
Added devcontainer support for easy development environment setup
2 parents d10d427 + e21d637 commit a58e716

File tree

2 files changed

+80
-0
lines changed

2 files changed

+80
-0
lines changed

.devcontainer/Dockerfile

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
# FROM mcr.microsoft.com/devcontainers/java:1-21-bullseye
2+
FROM ubuntu:22.04
3+
4+
# Add any tools that are needed beyond Java
5+
RUN apt-get update && \
6+
apt-get install -y sudo sed vim git make gcc zlib1g-dev zip unzip tree curl wget jq && \
7+
apt-get autoremove -y && \
8+
apt-get clean -y
9+
10+
# Create a user for development
11+
ARG USERNAME=vscode
12+
ARG USER_UID=1000
13+
ARG USER_GID=$USER_UID
14+
15+
# Create the user with passwordless sudo privileges
16+
RUN groupadd --gid $USER_GID $USERNAME \
17+
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME -s /bin/bash \
18+
&& usermod -aG sudo $USERNAME \
19+
&& echo $USERNAME ALL=\(root\) NOPASSWD:ALL > /etc/sudoers.d/$USERNAME \
20+
&& chmod 0440 /etc/sudoers.d/$USERNAME \
21+
&& chown -R $USERNAME:$USERNAME /home/$USERNAME
22+
23+
WORKDIR /codenet-minerva-code-analyzer
24+
25+
USER $USERNAME
26+
27+
# Install Java and Gradle via SDKMan
28+
RUN curl -s "https://get.sdkman.io" | bash
29+
30+
# This SHELL command is needed to run using `source`
31+
SHELL ["/bin/bash", "-c"]
32+
RUN source "$HOME/.sdkman/bin/sdkman-init.sh" && \
33+
sdk install java 17.0.12-sem && \
34+
sdk use java 17.0.12-sem && \
35+
sdk install gradle 8.9
36+

.devcontainer/devcontainer.json

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
// cspell: disable
2+
{
3+
"name": "CodeAnalyzer",
4+
"dockerFile": "Dockerfile",
5+
"context": "..",
6+
"remoteUser": "vscode",
7+
"workspaceFolder": "/codenet-minerva-code-analyzer",
8+
"workspaceMount": "source=${localWorkspaceFolder},target=/codenet-minerva-code-analyzer,type=bind,consistency=delegated",
9+
"runArgs": ["-h", "codenet"],
10+
"customizations": {
11+
"vscode": {
12+
"settings": {
13+
"markdown-preview-github-styles.colorTheme": "light",
14+
"makefile.extensionOutputFolder": "/tmp",
15+
"cSpell.words": [
16+
"northstar",
17+
"cyclomatic",
18+
"jgrapht",
19+
"stdlibs"
20+
],
21+
"files.exclude": {
22+
"**/.git": true,
23+
"**/.DS_Store": true
24+
}
25+
},
26+
"extensions": [
27+
"vscjava.vscode-java-pack",
28+
"vscjava.vscode-java-test",
29+
"vscjava.vscode-java-debug",
30+
"vscjava.vscode-gradle",
31+
"donjayamanne.githistory",
32+
"bierner.github-markdown-preview",
33+
"yzhang.markdown-all-in-one",
34+
"hnw.vscode-auto-open-markdown-preview",
35+
"davidanson.vscode-markdownlint",
36+
"bierner.markdown-preview-github-styles",
37+
"streetsidesoftware.code-spell-checker",
38+
"ms-azuretools.vscode-docker"
39+
]
40+
}
41+
},
42+
// Install the version of gradle the project uses
43+
"postCreateCommand": "./gradlew"
44+
}

0 commit comments

Comments
 (0)