universal multi-language development environment with pre-installed compilers, interpreters, tools
1.6K
Universal Docker image for development, building, and testing projects in various programming languages
| Metadata | Value |
|---|---|
| Published image | vxcontrol/codebase |
| Image architecture | amd64, arm64 |
| Container OS | Ubuntu 24.10 (oracular) |
| Languages, platforms | C/C++, .NET, Fortran, Go, Java, Node.js/TypeScript, PHP, Python, R, Ruby, Rust |
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:
# 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')"
The image contains the following development utilities:
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');
});
# 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
# Run a .NET application
dotnet run
# Build a .NET project
dotnet build
# Compile a Fortran program
gfortran -o myapp main.f90
./myapp
# Run a Go application
go run main.go
# Build a Go project
go build -o myapp
# Compile and run a Java program
javac Main.java
java Main
# Build a Maven project
mvn clean package
# Build a Gradle project
gradle build
# 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
# Run a PHP script
php script.php
# Install dependencies via Composer
composer install
# 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
# Run an R script
Rscript script.R
# Run a Ruby script
ruby script.rb
# Install gems
gem install bundler
bundle install
# Compile a Rust program directly
rustc main.rs
./main
# Use Cargo
cargo build
cargo run
The image contains powerful development tools, but you should keep security in mind:
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:
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
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
pipeline {
agent {
docker {
image 'vxcontrol/codebase:latest'
}
}
stages {
stage('Build') {
steps {
sh 'make build'
}
}
stage('Test') {
steps {
sh 'make test'
}
}
}
}
This section provides specific information for AI-based development assistants and automated systems working with this image.
When instructing the container programmatically, consider:
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
Path Conventions: Use /work as the standard working directory
cd /work
Virtual Environment Activation: For Python, the virtual environment is pre-activated, but you can ensure it's active with:
source /opt/venv/bin/activate
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
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.
Content type
Image
Digest
sha256:2ee2867ec…
Size
1.9 GB
Last updated
over 1 year ago
docker pull vxcontrol/codebase