zammad/doc/developer_manual/development_environment/devcontainer-setup.md

101 lines
3 KiB
Markdown
Raw Permalink Normal View History

# Devcontainer Setup
## Overview
Zammad provides a pre-configured development container (devcontainer) for a ready-to-use development environment.
This is the **recommended** way to set up your environment, as it eliminates the need to manually install and
configure dependencies.
### Stack options
- Default
- With Mailserver (for local email testing)
- With Ollama (for local AI playground)
- With Selenium (for integration tests)
## Prerequisites
- VS Code with the Dev Containers extension (or other compatible editors / terminals).
- Docker Desktop or Docker CLI.
Ensure Docker has at least 8 GB of memory and sufficient CPU allocated.
You can configure this in Docker Desktop's settings (Settings > Resources).
## Build and Launch the Container
- Clone the [Zammad repository](https://github.com/zammad/zammad) (if you haven't already).
- Open the root of the Zammad checkout in VS Code.
A pop-up will appear in the bottom-right corner: "Reopen in Container". Click it.
- VS Code will now build the devcontainer.
## Accessing Zammad
Once the build is complete, the container will automatically:
- Start all required services (PostgreSQL, Redis, Elasticsearch).
- Initialize and seed the database.
Open a new terminal window and start the development server:
```sh
dev
```
Access the app at [https://localhost:3000](https://localhost:3000)
The first run may take a few minutes while Rails compiles assets.
You may see a blank browser window until this is complete.
### Default Credentials
```text
Username / Email: admin@example.com
Password: test
```
## Customizing Your Development Environment
You can personalize your Zammad development container using your own dotfiles.
### Dev Container Settings
Before using dotfiles, configure the following settings in VS Code:
- `dotfiles.installCommand` - Command provided by your repository to deploy the dotfiles (for example `install.sh`)
- `dotfiles.repository` - Git repository to clone
These settings are only available when the folder is opened locally.
The devcontainer comes with [oh-my-zsh](https://ohmyz.sh/) pre-installed,
so you can extend it with your own themes, aliases, and plugins.
> [!TIP]
> When setting this up for the first time, a container rebuild is required.
## Known Issues
### Rebase Issues on Mac
When working inside the devcontainer on mac, you might encounter problems rebasing branches.
This is due to a known issue between Docker Desktop and Git file stat checks.
You can resolve this by configuring Git to perform minimal file stat checking:
```console
git config set --system core.checkStat minimal
```
Note that this setting will not persist between container rebuilds, so you can also place it in your local .gitconfig first:
```ini
[core]
checkStat = minimal
```
## What's Next?
Now that your development environment is up and running, the next step is to get familiar with the Zammad development workflow.
Read the [Development Workflow](development-workflow.md) guide for details on testing, debugging, and contributing code.