Container Filesystem Structure
When you start the container, your working directory is automatically set to/app/user_code. This is where all your game development happens.
The
/app/user_code directory is volume-mounted from your host system’s ./user_code folder. Any changes you make inside the container are immediately reflected on your host, and vice versa.Volume Mounting and File Synchronization
The container uses Docker volumes to keep your code synchronized between the host and container:- Persistence: Your code survives when the container exits (the
--rmflag removes the container but not the volume) - Real-time sync: Edit files on your host with your favorite IDE, compile inside the container
- No data loss: Since files live on the host, you never lose work
- Easy backup: Your source code is on your host filesystem for version control
You can edit your source files using any editor on your host machine (VS Code, Vim, etc.) and the changes will instantly appear inside the container for compilation.
File Organization Best Practices
Organize your Raylib projects effectively within theuser_code directory:
Single File Projects
For simple games or examples:Multi-File Projects
For larger games with multiple modules:Multiple Projects
Keep separate projects in subdirectories:Using the Container Terminal
Once inside the container, you have access to a full Alpine Linux shell environment:Navigating Directories
Viewing and Editing Files
While we recommend editing on the host, you can view files inside the container:Managing Files
Available Development Tools
The container comes with essential development tools pre-installed:GCC Compiler
G++ Compiler
For C++ projects:Make Build System
Git Version Control
The container is based on Alpine Linux, which uses the
apk package manager. While GCC, Make, and Git are pre-installed, you can install additional tools with apk add package-name if needed during your session.Graphics Testing
Verify your graphics connection is working before starting development:Working Directory Best Practices
- Always work in
/app/user_code: This ensures your files are preserved and synced with the host - Use relative paths: Reference assets and files relative to your project directory
- Keep executables with source: Run compiled programs from the same directory they were built in
- Test frequently: Compile and run often to catch errors early