Co-authored-by: Ona <no-reply@ona.com>
This commit is contained in:
36
.devcontainer/Dockerfile
Normal file
36
.devcontainer/Dockerfile
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
FROM mcr.microsoft.com/devcontainers/javascript-node:24-bookworm
|
||||||
|
|
||||||
|
# Install system dependencies
|
||||||
|
RUN apt-get update && apt-get install -y \
|
||||||
|
curl \
|
||||||
|
ca-certificates \
|
||||||
|
gnupg \
|
||||||
|
lsb-release \
|
||||||
|
ripgrep \
|
||||||
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
# Install latest neovim using pre-built binary
|
||||||
|
RUN curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz \
|
||||||
|
&& tar -C /opt -xzf nvim-linux-x86_64.tar.gz \
|
||||||
|
&& ln -s /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/nvim \
|
||||||
|
&& rm nvim-linux-x86_64.tar.gz
|
||||||
|
|
||||||
|
# Install Bun as the node user
|
||||||
|
USER node
|
||||||
|
RUN curl -fsSL https://bun.sh/install | bash
|
||||||
|
ENV PATH="/home/node/.bun/bin:$PATH"
|
||||||
|
|
||||||
|
# Switch back to root for any remaining setup
|
||||||
|
USER root
|
||||||
|
|
||||||
|
# Ensure the node user owns their home directory
|
||||||
|
RUN chown -R node:node /home/node
|
||||||
|
|
||||||
|
# Set the default user back to node
|
||||||
|
USER node
|
||||||
|
|
||||||
|
# Set working directory
|
||||||
|
WORKDIR /workspace
|
||||||
|
|
||||||
|
# Verify bun installation
|
||||||
|
RUN bun --version
|
||||||
32
.devcontainer/devcontainer.json
Normal file
32
.devcontainer/devcontainer.json
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
// The Dev Container format allows you to configure your environment. At the heart of it
|
||||||
|
// is a Docker image or Dockerfile which controls the tools available in your environment.
|
||||||
|
//
|
||||||
|
// See https://aka.ms/devcontainer.json for more information.
|
||||||
|
{
|
||||||
|
"name": "Ona",
|
||||||
|
// This universal image (~10GB) includes many development tools and languages,
|
||||||
|
// providing a convenient all-in-one development environment.
|
||||||
|
//
|
||||||
|
// This image is already available on remote runners for fast startup. On desktop
|
||||||
|
// and linux runners, it will need to be downloaded, which may take longer.
|
||||||
|
//
|
||||||
|
// For faster startup on desktop/linux, consider a smaller, language-specific image:
|
||||||
|
// • For Python: mcr.microsoft.com/devcontainers/python:3.13
|
||||||
|
// • For Node.js: mcr.microsoft.com/devcontainers/javascript-node:24
|
||||||
|
// • For Go: mcr.microsoft.com/devcontainers/go:1.24
|
||||||
|
// • For Java: mcr.microsoft.com/devcontainers/java:21
|
||||||
|
//
|
||||||
|
// Browse more options at: https://hub.docker.com/r/microsoft/devcontainers
|
||||||
|
// or build your own using the Dockerfile option below.
|
||||||
|
"build": {
|
||||||
|
"context": ".",
|
||||||
|
"dockerfile": "Dockerfile"
|
||||||
|
}
|
||||||
|
// Features add additional features to your environment. See https://containers.dev/features
|
||||||
|
// Beware: features are not supported on all platforms and may have unintended side-effects.
|
||||||
|
// "features": {
|
||||||
|
// "ghcr.io/devcontainers/features/docker-in-docker": {
|
||||||
|
// "moby": false
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
}
|
||||||
48
.github/workflows/build-devcontainer.yml
vendored
Normal file
48
.github/workflows/build-devcontainer.yml
vendored
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
name: Build Dev Container Image
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- main
|
||||||
|
paths:
|
||||||
|
- '.devcontainer/**'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
env:
|
||||||
|
REGISTRY: cr.nym.sh
|
||||||
|
IMAGE_NAME: kennethnym/devcontainer-bun
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
packages: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Log in to Container Registry
|
||||||
|
uses: docker/login-action@v3
|
||||||
|
with:
|
||||||
|
registry: ${{ env.REGISTRY }}
|
||||||
|
username: ${{ github.REGISTRY_USERNAME }}
|
||||||
|
password: ${{ secrets.REGISTRY_PASSWORD }}
|
||||||
|
|
||||||
|
- name: Extract metadata
|
||||||
|
id: meta
|
||||||
|
uses: docker/metadata-action@v5
|
||||||
|
with:
|
||||||
|
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
||||||
|
tags: |
|
||||||
|
type=sha
|
||||||
|
type=raw,value=latest
|
||||||
|
|
||||||
|
- name: Build and push
|
||||||
|
uses: docker/build-push-action@v6
|
||||||
|
with:
|
||||||
|
context: .devcontainer
|
||||||
|
push: true
|
||||||
|
tags: ${{ steps.meta.outputs.tags }}
|
||||||
|
labels: ${{ steps.meta.outputs.labels }}
|
||||||
Reference in New Issue
Block a user