Skip to content

Commit 69cf1c1

Browse files
refactor dockerfile
1 parent 1f3cb25 commit 69cf1c1

File tree

6 files changed

+61
-24
lines changed

6 files changed

+61
-24
lines changed

Dockerfile

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,16 @@ FROM mcr.microsoft.com/devcontainers/base:ubuntu
22
ARG TARGETARCH
33

44
SHELL ["/usr/bin/zsh", "-l", "-c"]
5-
ENTRYPOINT ["/usr/bin/zsh", "-l"]
65

7-
# Install global packages and tools
8-
RUN <<EOF
9-
set -e
10-
install -dm 755 /etc/apt/keyrings
11-
wget -qO - https://mise.jdx.dev/gpg-key.pub | \
12-
gpg --dearmor | \
13-
tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null
14-
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=${TARGETARCH}] https://mise.jdx.dev/deb stable main" | \
15-
tee /etc/apt/sources.list.d/mise.list
16-
sed -i '/path-exclude/s/^/#/' /etc/dpkg/dpkg.cfg.d/excludes
17-
apt-get update -y
18-
apt-get upgrade -y
19-
apt-get install -y git vim mise
20-
apt-get --reinstall install man-db manpages manpages-dev manpages-posix manpages-posix-dev -y
21-
apt-get clean -y
22-
apt-get autoclean -y
23-
apt-get autoremove -y
24-
mv /usr/bin/man.REAL /usr/bin/man
25-
mandb -c
26-
EOF
6+
# Run setup scripts
7+
COPY setupfiles /tmp/setupfiles
8+
WORKDIR /tmp/setupfiles
9+
RUN ./0-apt-init.zsh
10+
RUN ./1-enable-man-pages.zsh
11+
RUN ./2-install-packages.zsh
12+
RUN ./99-apt-cleanup.zsh
13+
WORKDIR /
14+
RUN rm -rf /tmp/setupfiles
2715

2816
# Initialize system config
2917
COPY rootfiles/ /
@@ -33,4 +21,6 @@ USER vscode
3321
WORKDIR /home/vscode
3422
COPY --chown=vscode:vscode dotfiles/ ./
3523
RUN sudo chsh -s /usr/bin/zsh vscode
36-
RUN sudo mkdir -p /workspaces/.config
24+
25+
# Use login shell for the entrypoint (debug only - devcontainers override this)
26+
ENTRYPOINT ["/usr/bin/zsh", "-l"]

mise.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ AWS_PROFILE = "seahax"
33
AWS_REGION = "us-west-2"
44

55
[tasks.build]
6-
run = "docker build -t seahax/devcontainer ."
6+
run = "docker build --progress=plain -t seahax/devcontainer ."
77

88
[tasks.buildx]
9-
run = "docker buildx build --platform linux/arm64,linux/amd64 -t seahax/devcontainer ."
9+
run = "docker buildx build --progress=plain --platform linux/arm64,linux/amd64 -t seahax/devcontainer ."

setupfiles/0-apt-init.zsh

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
#!/usr/bin/env zsh
2+
set -e
3+
4+
# Remove path exclusions from dpkg configuration so that packages that were
5+
# stubbed by minimizing Ubuntu can be reinstalled (re-enabled).
6+
sed -i '/path-exclude/s/^/#/' /etc/dpkg/dpkg.cfg.d/excludes
7+
8+
# Add mise repository and GPG key.
9+
install -dm 755 /etc/apt/keyrings
10+
wget -qO - https://mise.jdx.dev/gpg-key.pub | \
11+
gpg --dearmor | \
12+
tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null
13+
echo "deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=${TARGETARCH}] https://mise.jdx.dev/deb stable main" | \
14+
tee /etc/apt/sources.list.d/mise.list
15+
16+
# Update apt repositories and upgrade existing packages.
17+
apt-get update -y
18+
apt-get upgrade -y

setupfiles/1-enable-man-pages.zsh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
#!/usr/bin/env zsh
2+
set -e
3+
4+
# Reinstall man pages to enable them (excluded by minimized Ubuntu).
5+
apt-get install -y --reinstall \
6+
man-db manpages \
7+
manpages-dev \
8+
manpages-posix \
9+
manpages-posix-dev \
10+
;
11+
12+
# Restore the real man command binary.
13+
mv /usr/bin/man.REAL /usr/bin/man
14+
15+
# Rebuild the man database.
16+
mandb -c

setupfiles/2-install-packages.zsh

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
#!/usr/bin/env zsh
2+
set -e
3+
4+
apt-get install -y \
5+
vim \
6+
mise \
7+
;

setupfiles/99-apt-cleanup.zsh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/usr/bin/env zsh
2+
set -e
3+
4+
# Cleanup apt cache and remove unnecessary packages.
5+
apt-get clean -y
6+
apt-get autoremove -y

0 commit comments

Comments
 (0)