Sign inSign up

vxcontrol/codebase

By vxcontrol

Updated over 1 year ago

universal multi-language development environment with pre-installed compilers, interpreters, tools

Image
Languages & frameworks
Integration & delivery
Developer tools
1

1.6K

vxcontrol/codebase repository overview

VXControl Codebase: Multi-language Development Environment

Overview

Universal Docker image for development, building, and testing projects in various programming languages

MetadataValue
Published imagevxcontrol/codebase
Image architectureamd64, arm64
Container OSUbuntu 24.10 (oracular)
Languages, platformsC/C++, .NET, Fortran, Go, Java, Node.js/TypeScript, PHP, Python, R, Ruby, Rust

Description

The vxcontrol/codebase image provides a ready-to-use universal development environment that includes compilers, interpreters, and tools for working with multiple programming languages. This image is designed for developers and automated systems that need a standardized environment for building, testing, and running code.

This container is particularly useful in the following scenarios:

  • Multi-language project development
  • CI/CD pipeline configuration
  • Creating reproducible development environments
  • Cross-platform compatibility testing
  • Supporting AI agents for code development and testing

Using the Image

# Run container with current directory as working directory
docker run -it --rm -v $(pwd):/work vxcontrol/codebase

# Run container with port for web applications
docker run -it --rm -v $(pwd):/work -p 3000:3000 vxcontrol/codebase

# Run a command inside the container
docker run -it --rm -v $(pwd):/work vxcontrol/codebase python -c "print('Hello World')"

Pre-installed Tools

System Utilities

The image contains the following development utilities:

  • Git (2.45.2)
  • Curl (8.9.1)
  • Wget
  • Build-Essential
  • Make (4.3)
  • CMake (3.30.3)
  • Ninja (1.12.1)
  • JQ (1.7.1)
  • SSH client
  • and other standard Unix utilities
Pre-installed Packages by Language
C/C++
  • GCC/G++ (14.2.0)
  • Clang/Clang++ (19.1.1)
  • CMake (3.30.3)
  • Ninja (1.12.1)
  • Make (4.3)
  • Valgrind
  • GDB
  • LLDB
.NET
  • .NET SDK (9.0.102)
  • .NET Runtime (9.0.1)
  • ASP.NET Core Runtime (9.0.1)
Fortran
  • GFortran (14.2.0)
Go
  • Go (1.23.2)
  • CGO enabled by default
Java
  • OpenJDK (1.8.0_442)
  • Maven (3.8.8)
  • Gradle (4.4.1)
  • SDKMAN (5.19.0)
Node.js and TypeScript
  • Node.js (20.16.0)
  • NPM (9.2.0)
  • Yarn (1.22.22)
  • TypeScript (4.9.3)
  • ESLint (8.28.0)
  • Playwright (1.51.0) with Chromium
Playwright Browser Automation

Playwright is pre-installed globally (version 1.51.0) with Chromium browser support for headless testing, web scraping, and automation tasks. The environment is pre-configured for headless operation in containerized environments.

Environment Configuration:

PLAYWRIGHT_BROWSERS_PATH=/opt/playwright-browsers
PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=true
PLAYWRIGHT_SKIP_VALIDATE_HOST_REQUIREMENTS=true
PLAYWRIGHT_SKIP_BROWSER_VALIDITY_CHECK=true
PLAYWRIGHT_HEADLESS=true

Usage Examples:

Taking screenshots via CLI:

# Take a screenshot of a webpage
npx playwright screenshot https://example.com screenshot.png

Using Playwright in Node.js scripts:

// screenshot.js
const { chromium } = require('playwright');

(async () => {
  // Launch browser in headless mode (default in this container)
  const browser = await chromium.launch();
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({ path: 'screenshot.png' });
  console.log('Screenshot successfully saved to screenshot.png');
  await browser.close();
})();

Run the script:

node screenshot.js

Web testing example:

// test.js
const { test, expect } = require('@playwright/test');

test('basic test', async ({ page }) => {
  await page.goto('https://example.com');
  const title = await page.title();
  expect(title).toBe('Example Domain');
});
PHP
  • PHP (8.3.11)
  • Composer (2.7.7)
  • Apache2
Python
  • Python (3.12.7)
  • pip (25.0.1)
  • virtualenv (activated in /opt/venv)
  • Jupyter Lab (4.3.5)
  • pylint (3.2.7)
  • flake8 (7.1.1)
  • bandit (1.7.8)
  • autopep8 (2.3.1)
  • pydocstyle (6.3.0)
Python Libraries
  • numpy (2.2.3) - Fundamental package for scientific computing
  • pandas (2.2.3) - Data analysis and manipulation tool
  • scipy (1.15.2) - Scientific computation library
  • matplotlib (3.10.1) - Visualization library
  • seaborn (0.13.2) - Statistical data visualization
  • scikit-learn (1.6.1) - Machine learning library
  • torch (2.6.0+cpu) - PyTorch deep learning framework
  • sympy (1.13.1) - Symbolic mathematics
  • networkx (3.4.2) - Network and graph analysis
  • plotly (6.0.0) - Interactive visualization library
Jupyter & Interactive Development
  • jupyter (1.1.1) - Interactive notebook environment
  • jupyterlab (4.3.5) - Next-generation web interface for Jupyter
  • jupyterlab_git (0.51.0) - Git extension for JupyterLab
  • ipython (9.0.2) - Enhanced interactive Python shell
  • ipykernel (6.29.5) - IPython kernel for Jupyter
  • ipywidgets (8.1.5) - Interactive widgets for Jupyter
Web & API Tools
  • requests (2.32.3) - HTTP library for API calls
  • httpx (0.28.1) - Next-generation HTTP client
  • urllib3 (2.3.0) - HTTP client
  • beautifulsoup4 (4.13.3) - HTML/XML parsing library
Image Processing
  • pillow (11.1.0) - Python Imaging Library fork
Development Tools
  • GitPython (3.1.44) - Git repository interaction
  • pyyaml (6.0.2) - YAML parser and emitter
  • setuptools (76.0.0) - Package development tool
  • wheel (0.45.1) - Built-package format
R
  • R (4.4.1)
  • Rscript (4.4.1)
Ruby
  • Ruby (3.3.4)
  • Gems (3.4.20)
  • Rake (13.2.1)
Rust
  • Rustc (1.80.1)
  • Cargo (1.80.1)

Usage Examples

C/C++
# Build a C++ project using CMake
mkdir -p build && cd build
cmake ..
make

# Or using direct compilation
g++ -o myapp main.cpp -std=c++17
./myapp
.NET
# Run a .NET application
dotnet run

# Build a .NET project
dotnet build
Fortran
# Compile a Fortran program
gfortran -o myapp main.f90
./myapp
Go
# Run a Go application
go run main.go

# Build a Go project
go build -o myapp
Java
# Compile and run a Java program
javac Main.java
java Main

# Build a Maven project
mvn clean package

# Build a Gradle project
gradle build
Node.js/TypeScript
# Install dependencies
npm install
# or
yarn install

# Run a Node.js application
node app.js

# Compile TypeScript
tsc -p tsconfig.json

# Run tests
npm test
PHP
# Run a PHP script
php script.php

# Install dependencies via Composer
composer install
Python
# Run a Python script
python script.py

# Install dependencies
pip install -r requirements.txt

# Run Jupyter Lab
jupyter lab --ip=0.0.0.0 --port=8888 --no-browser --allow-root
R
# Run an R script
Rscript script.R
Ruby
# Run a Ruby script
ruby script.rb

# Install gems
gem install bundler
bundle install
Rust
# Compile a Rust program directly
rustc main.rs
./main

# Use Cargo
cargo build
cargo run

Complete List of Pre-installed Packages

APT Packages
Build Tools & Development Essentials
  • build-essential - Compilation tools for C/C++
  • cmake (3.30.3) - Cross-platform build system
  • ninja-build (1.12.1) - Small build system with a focus on speed
  • make (4.3) - Utility for directing compilation
  • gdb - GNU debugger
  • valgrind - Memory debugging and profiling tool
  • clang (19.1.1) - C language family frontend for LLVM
Version Control
  • git (2.45.2) - Distributed version control system
  • git-lfs - Git extension for versioning large files
Network & File Utilities
  • curl (8.9.1) - Command line tool for transferring data
  • wget (1.24.5) - Network utility to retrieve files from the web
  • netcat-openbsd - TCP/IP swiss army knife
  • iputils-ping - Tools to test the reachability of network hosts
  • dnsutils - DNS utilities
  • zip/unzip - Compression utilities
  • jq (1.7.1) - Lightweight and flexible command-line JSON processor
Web Development
  • nodejs (20.16.0) - JavaScript runtime
  • npm (9.2.0) - Node package manager
  • webpack (5.76.1) - Module bundler for JavaScript
Editors & Shells
  • vim (9.1.0496) - Highly configurable text editor
  • nano - Simple console-based text editor
  • bash (5.2.32) - GNU Bourne Again SHell
System Monitoring & Diagnostics
  • htop - Interactive process viewer
  • strace - System call tracer
  • lsof - Lists open files
  • procps - Process utilities
Libraries
  • libpq-dev - PostgreSQL development files
  • libmysqlclient-dev - MySQL development files
  • libsqlite3-dev - SQLite development files
  • zlib1g (1.3) - Compression library
  • libssl-dev - OpenSSL development libraries
  • libgdiplus - .NET graphics library

Security

The image contains powerful development tools, but you should keep security in mind:

  • Use containers only in a trusted environment
  • Do not run containers in privileged mode unless required
  • Restrict network access to the container
  • Use volume mounting for only necessary directories
  • Regularly update the image to get the latest security fixes

CI/CD Integration

This image is designed to be easily integrated into CI/CD pipelines for multi-language projects. Here are examples of integration with popular CI/CD platforms:

GitHub Actions Example
name: Build and Test

on:
  push:
    branches: [ main ]
  pull_request:
    branches: [ main ]

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: vxcontrol/codebase:latest
    
    steps:
    - uses: actions/checkout@v3
    
    # Example for a Python project
    - name: Run Python tests
      run: |
        pip install -r requirements.txt
        pytest
        
    # Example for a Node.js project
    - name: Build and test frontend
      run: |
        npm install
        npm run build
        npm test
GitLab CI Example
image: vxcontrol/codebase:latest

stages:
  - build
  - test

build-job:
  stage: build
  script:
    - echo "Building the project..."
    # Build commands for your specific language

test-job:
  stage: test
  script:
    - echo "Running tests..."
    # Test commands for your specific language
Jenkins Pipeline Example
pipeline {
    agent {
        docker {
            image 'vxcontrol/codebase:latest'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'make build'
            }
        }
        stage('Test') {
            steps {
                sh 'make test'
            }
        }
    }
}

For AI Agents

This section provides specific information for AI-based development assistants and automated systems working with this image.

Key Capabilities
  • Multi-language Support: The image supports development in 11 programming languages with all necessary compilers and interpreters pre-installed
  • Pre-configured Development Environment: Common development tools and dependencies are ready to use
  • Testing Infrastructure: Testing frameworks and utilities are available for automated quality assurance
  • Headless Browser Support: Playwright with Chromium is installed for web testing and scraping
Common Automation Patterns

When instructing the container programmatically, consider:

  1. Environment Detection: Use standard environment variables to detect the runtime environment

    # Detect if running inside a container
    if [ -f /.dockerenv ]; then
      echo "Running inside a Docker container"
    fi
    
  2. Path Conventions: Use /work as the standard working directory

    cd /work
    
  3. Virtual Environment Activation: For Python, the virtual environment is pre-activated, but you can ensure it's active with:

    source /opt/venv/bin/activate
    
Resource Management

The container does not impose specific resource limits by default. When deploying in production or CI/CD environments, consider setting:

docker run -it --rm \
  --cpus=2 \
  --memory=4g \
  --memory-swap=4g \
  -v $(pwd):/work \
  vxcontrol/codebase

Additional Resources

License

This image is freely available for use in any project. However, while the image configuration itself is open, many of the included packages have their own licenses. For use in commercial projects, users should independently verify the licenses of installed packages and comply with their licensing terms.

Some packages may have specific requirements for commercial use or distribution. It is the user's responsibility to ensure compliance with all license requirements for any included software.

Tag summary

Content type

Image

Digest

sha256:2ee2867ec

Size

1.9 GB

Last updated

over 1 year ago

docker pull vxcontrol/codebase