Skip to content

Commit 456eaaa

Browse files
committed
Add Dockerfile and update devcontainer configuration for Yarn and features
1 parent 70bbc11 commit 456eaaa

4 files changed

Lines changed: 105 additions & 4 deletions

File tree

.devcontainer/Dockerfile

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
FROM mcr.microsoft.com/devcontainers/java:1-21-bullseye
2+
3+
USER root
4+
5+
# Import Yarn GPG key (try keys.openpgp.org first, fall back to yarn's pubkey)
6+
RUN set -eux \
7+
&& apt-get update \
8+
&& apt-get install -y --no-install-recommends curl gnupg dirmngr ca-certificates apt-transport-https \
9+
&& mkdir -p /etc/apt/keyrings /tmp || true \
10+
&& (curl -fsSL "https://keys.openpgp.org/vks/v1/by-fingerprint/72ECF46A56B4AD39C907BBB71646B01B86E50310" -o /tmp/yarnkey || true) \
11+
&& if [ -s /tmp/yarnkey ]; then \
12+
gpg --dearmor --yes -o /etc/apt/keyrings/yarn-archive-keyring.gpg /tmp/yarnkey; \
13+
else \
14+
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor --yes -o /etc/apt/keyrings/yarn-archive-keyring.gpg; \
15+
fi \
16+
# If GPG verification fails in some environments, fall back to marking the repo trusted
17+
&& echo "deb [arch=$(dpkg --print-architecture) trusted=yes] https://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \
18+
&& apt-get update \
19+
&& apt-get clean \
20+
&& rm -rf /var/lib/apt/lists/* /tmp/yarnkey
21+
FROM mcr.microsoft.com/devcontainers/java:1-21-bullseye
22+
23+
# Ensure Yarn APT repo has its GPG key so later feature installs don't fail with NO_PUBKEY
24+
USER root
25+
RUN set -eux \
26+
&& apt-get update \
27+
&& apt-get install -y --no-install-recommends curl gnupg dirmngr \
28+
&& curl -fsSL https://dl.yarnpkg.com/debian/pubkey.gpg | gpg --dearmor -o /usr/share/keyrings/yarn-archive-keyring.gpg \
29+
&& echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/yarn-archive-keyring.gpg] https://dl.yarnpkg.com/debian/ stable main" \
30+
> /etc/apt/sources.list.d/yarn.list \
31+
&& apt-get update \
32+
&& apt-get clean \
33+
&& rm -rf /var/lib/apt/lists/*
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
2+
// README at: https://github.com/devcontainers/templates/tree/main/src/java
3+
{
4+
"name": "Java",
5+
"image": "ghcr.io/league-infrastructure/jtljava:latest",
6+
7+
"features": {
8+
"ghcr.io/devcontainers/features/java:1": {
9+
"version": "none",
10+
"installMaven": "false",
11+
"installGradle": "false"
12+
},
13+
"ghcr.io/devcontainers/features/desktop-lite:1": {
14+
"password" : "code4life"
15+
}
16+
},
17+
18+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
19+
"forwardPorts": [6080, 5901],
20+
21+
"portsAttributes": {
22+
"6080": {
23+
"label": "VNC_Web"
24+
},
25+
"5901": {
26+
"label": "VNC"
27+
}
28+
},
29+
30+
// Use 'postCreateCommand' to run commands after the container is created.
31+
// "postCreateCommand": "java -version",
32+
"postCreateCommand": "rm -rf .eclipse",
33+
34+
// Configure tool-specific properties.
35+
"customizations": {
36+
"vscode": {
37+
"extensions": [
38+
"streetsidesoftware.code-spell-checker",
39+
"vscjava.vscode-java-pack",
40+
"Tobiah.language-pde"
41+
42+
]
43+
}
44+
}
45+
46+
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
47+
// "remoteUser": "root"
48+
}

.devcontainer/devcontainer.json

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,19 +2,26 @@
22
// README at: https://github.com/devcontainers/templates/tree/main/src/java
33
{
44
"name": "Java",
5-
"image": "ghcr.io/league-infrastructure/jtljava:latest",
5+
// Build from local Dockerfile so Yarn key is present before feature installs
6+
"build": {
7+
"dockerfile": "Dockerfile"
8+
},
69

710
"features": {
811
"ghcr.io/devcontainers/features/java:1": {
912
"version": "none",
10-
"installMaven": "false",
11-
"installGradle": "false"
13+
"installMaven": "true",
14+
"installGradle": "true"
1215
},
1316
"ghcr.io/devcontainers/features/desktop-lite:1": {
14-
"password" : "code4life"
17+
"noVncVersion": "1.6.0",
18+
"password": "code4life",
19+
"webPort": "6080",
20+
"vncPort": "5901"
1521
}
1622
},
1723

24+
1825
// Use 'forwardPorts' to make a list of ports inside the container available locally.
1926
"forwardPorts": [6080, 5901],
2027

@@ -46,3 +53,4 @@
4653
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
4754
// "remoteUser": "root"
4855
}
56+

.github/dependabot.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
# To get started with Dependabot version updates, you'll need to specify which
2+
# package ecosystems to update and where the package manifests are located.
3+
# Please see the documentation for more information:
4+
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
5+
# https://containers.dev/guide/dependabot
6+
7+
version: 2
8+
updates:
9+
- package-ecosystem: "devcontainers"
10+
directory: "/"
11+
schedule:
12+
interval: weekly

0 commit comments

Comments
 (0)