Skip to content

Introduce devcontainer service container based development environment (#705)#706

Open
bedrich-schindler wants to merge 16 commits into
masterfrom
task/705
Open

Introduce devcontainer service container based development environment (#705)#706
bedrich-schindler wants to merge 16 commits into
masterfrom
task/705

Conversation

@bedrich-schindler
Copy link
Copy Markdown
Contributor

All development is now done inside the container named devcontainer which contains all necessary tools and dependencies. The devcontainer orchestrates other service containers behind the scenes via Docker-from-Docker. Other containers are implementation details and should not be accessed directly.

This is breaking change commit for development environment, so it is required to remove all the env files and start with fresh one.

There are two supported ways to access the development environment. Recommended way is to use Development Containers with an IDE. The alternative is to use Docker Compose directly. Local development is officially no more supported.

What more, documentation of contribution and CLAUDE.md was updated to match with the changes.


Closes #705

…ent (#705)

All development is now done inside the container named `devcontainer`
which contains all necessary tools and dependencies. The devcontainer
orchestrates other service containers behind the scenes
via Docker-from-Docker. Other containers are implementation details
and should not be accessed directly.

This is breaking change commit for development environment,
so it is required to remove all the env files and start with
fresh one.

There are two supported ways to access the development environment.
Recommended way is to use Development Containers with an IDE.
The alternative is to use Docker Compose directly. Local development
is officially no more supported.

What more, documentation of contribution and CLAUDE.md was updated
to match with the changes.
Comment thread docker/react_ui_devcontainer/files/usr/local/bin/mkdocs
Comment thread .devcontainer/devcontainer.json
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR migrates the repo’s development workflow to a single devcontainer-centric environment that orchestrates supporting service containers via Docker-from-Docker, updating scripts, Compose files, and contributor docs accordingly.

Changes:

  • Add a devcontainer image (with wrapper CLIs) and new Compose layout (docker-compose.base.yml + generated docker-compose.yml).
  • Introduce setup.sh + docker/build-docker-images.sh to generate config files and build images.
  • Consolidate Playwright configuration into .env and update contribution/testing documentation.

Reviewed changes

Copilot reviewed 16 out of 25 changed files in this pull request and generated 12 comments.

Show a summary per file
File Description
tests/playwright/env/parseDotEnvFile.ts Switch Playwright env parsing from .env.playwright to .env.
src/docs/contribute/testing-guidelines.md Update test-running guidance for the new container-agnostic workflow.
src/docs/contribute/general-guidelines.md Rewrite development environment docs around the devcontainer model.
setup.sh New host-side setup script to generate .env and docker-compose.yml and build images.
package.json Remove postinstall env-file bootstrap.
docker/react_ui_devcontainer_local/Dockerfile.dist Add template for locally extending the devcontainer image.
docker/react_ui_devcontainer/files/usr/local/bin/* Add wrapper scripts (npm/node/npx/mkdocs + AI tool shims) to route commands into service containers.
docker/react_ui_devcontainer/files/usr/local/bin/docker-entrypoint Add entrypoint that runs fixuid and home ownership setup.
docker/react_ui_devcontainer/files/home/developer/shell-init.sh Add SSH-agent forwarding blocking helper.
docker/react_ui_devcontainer/Dockerfile Add new devcontainer image build.
docker/build-docker-images.sh Add helper to build the devcontainer image and compose services.
docker-compose.yml.dist Add dist template for generated docker-compose.yml.
docker-compose.yml Remove old compose file (now generated).
docker-compose.base.yml Add new base compose defining devcontainer + node/playwright/docs services.
CLAUDE.md Update assistant guidance to assume devcontainer usage.
.gitignore Ignore generated compose + local devcontainer customization dir; stop ignoring .env.playwright.
.env.playwright.dist Remove dedicated Playwright env template.
.env.dist Expand .env.dist to include compose/devcontainer + Playwright settings.
.devcontainer/devcontainer.json Add Dev Container configuration to bootstrap via setup.sh.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread src/docs/contribute/general-guidelines.md
Comment thread src/docs/contribute/testing-guidelines.md Outdated
Comment thread src/docs/contribute/testing-guidelines.md Outdated
Comment thread setup.sh Outdated
Comment thread setup.sh
Comment thread docker/react_ui_devcontainer/Dockerfile Outdated
Comment thread docker/react_ui_devcontainer/Dockerfile Outdated
Comment thread docker-compose.base.yml Outdated
Comment thread docker/react_ui_devcontainer/Dockerfile Outdated
Comment thread docker/react_ui_devcontainer_local/Dockerfile.dist Outdated
Comment thread docker/react_ui_devcontainer/files/home/developer/shell-init.sh
Comment thread docker/react_ui_devcontainer/files/usr/local/bin/docker-entrypoint
Comment thread docker/build-docker-images.sh
Comment thread .env.dist
bedrich-schindler and others added 2 commits March 27, 2026 16:04
…nvironment (#705)

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 16 out of 25 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docker-compose.base.yml
Comment thread docker/build-docker-images.sh
Comment thread src/docs/contribute/testing-guidelines.md Outdated
Comment thread CLAUDE.md Outdated
…rvice container based development environment (#705)
…ner` service container based development environment (#705)
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Mar 27, 2026

PR Preview Action v1.8.1

QR code for preview link

🚀 View preview at
https://react-ui-org.github.io/react-ui/pr-preview/pr-706/

Built to branch gh-pages at 2026-04-21 12:25 UTC.
Preview will be ready when the GitHub Pages deployment is complete.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 16 out of 25 changed files in this pull request and generated 6 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread docker/react_ui_devcontainer/Dockerfile
Comment thread setup.sh
Comment thread docker-compose.base.yml Outdated
Comment thread setup.sh
Comment thread setup.sh
Comment thread docker/build-docker-images.sh
…vcontainer` service container based development environment (#705)
Comment thread src/docs/contribute/general-guidelines.md Outdated
@adamkudrna adamkudrna added the claude Ask Claude to perform code review. label Apr 1, 2026
Copy link
Copy Markdown
Member

@adamkudrna adamkudrna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have a lot of comments, but I really like it! You have done a great job 👏🏻.

Comment thread docker/react_ui_devcontainer/files/home/developer/shell-init.sh
Comment thread docker/react_ui_devcontainer/files/usr/local/bin/copilot
Comment thread docker/react_ui_devcontainer/files/usr/local/bin/mkdocs
Comment thread docker/react_ui_devcontainer/files/usr/local/bin/mkdocs
Comment thread src/docs/contribute/testing-guidelines.md
Comment thread .env.dist
Comment thread .env.dist
Comment thread src/docs/contribute/general-guidelines.md
Comment thread docker-compose.base.yml
Comment thread setup.sh
@adamkudrna adamkudrna removed the claude Ask Claude to perform code review. label Apr 1, 2026
Copy link
Copy Markdown
Member

@adamkudrna adamkudrna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Here are a few points by Claude. I believe they are relevant.

(Once you rebase the branch, we can try asking Claude to do CR right here, just by adding the claude label.)

Comment thread setup.sh Outdated
Comment thread docker/react_ui_devcontainer/Dockerfile Outdated
Comment thread docker-compose.base.yml Outdated
Comment thread src/docs/contribute/general-guidelines.md Outdated
Comment thread .env.dist Outdated
…uce `devcontainer` service container based development environment (#705)
… Introduce `devcontainer` service container based development environment (#705)
… !fixup Introduce `devcontainer` service container based development environment (#705)
@bedrich-schindler
Copy link
Copy Markdown
Contributor Author

@claude make code review.

… fixup! !fixup Introduce `devcontainer` service container based development environment (#705)
… fixup! fixup! !fixup Introduce `devcontainer` service container based development environment (#705)
… fixup! fixup! fixup! !fixup Introduce `devcontainer` service container based development environment (#705)
Comment thread src/docs/contribute/general-guidelines.md
All service containers mount the workspace at `/workspace` so that file changes
are shared.

## Automatic Service Bootstrap
Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We spoke about this mode several times. I did my best to solve it fast and easy.

I added this section together with designated scripts. I tried to craft it with Claude as much as I can to be simple, covering as most cases as I can. Hope that documentation emphasize that this is for experienced users only and if it causes some problems, lets turn it off, restart container and continue without it.

But unless new deps are installed, it should work a pretty good and it also make sure on startup that your deps are up to date! Personally, I sometimes forget to update them and for example Playwright might result in incorrect snapshots.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I quickly tested both modes by editing a component (no re-install) and it seems to work well. 👏🏻

Comment thread setup.sh
… fixup! fixup! fixup! fixup! !fixup Introduce `devcontainer` service container based development environment (#705)
Copy link
Copy Markdown
Contributor

@mbohal mbohal left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not test it extensively,nor did I do very throughout CR. I do not have that much time now.

However it works on my machine and I saw nothing I would not feel comfortable merging. So here goes the ✔️

Copy link
Copy Markdown
Member

@adamkudrna adamkudrna left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You have done a great job @bedrich-schindler 👏🏻.

  • Docs are clear and understandable.
  • I tested the default mode and auto-start mode, both OK.
  • I successfully started Claude (but stopped before logging in).
  • I did not test any customization features.
  • Only issue I have observed so far is the missing Git intergration in my Jetbrains.

Can't wait to start using it!

Comment thread setup.sh
Comment thread src/docs/contribute/general-guidelines.md
Comment on lines +33 to +34
> You can skip this section when using [Development Containers]. They run this
> script automatically the first time the project is opened.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this paragraph belongs to the parent section, so I can skip right to "Accessing the Development Environment" instead of "Manual setup".

Comment thread src/docs/contribute/general-guidelines.md
vim \
nano \
openssh-client \
git \
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I am testing a fresh install and have issues with Git. I can reach Git in the devcontainer's terminal:

$ git

But I cannot turn on Jetbrains' integration of Git in IDE Settings:

Git is not installed
Failed to start Git process: Couldn't run In "/root" execute /usr/bin/git -c core.quotepath=false -c log.showSignature=false version: 13: Permission denied (os error 13)

Image

It already pops out on devcontainer startup:

Image

When I run the same command /usr/bin/git -c core.quotepath=false -c log.showSignature=false in the devcontainer's terminal, Git successfully responds.

@@ -0,0 +1,23 @@
{
"name": "React UI (${localWorkspaceFolderBasename})",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I found out the name is used on the Dev Containers screen in Jetbrains:

Image

Project's terminal is also nice:

Image

But when I open the project in IDE, the project name matches the root folder which is simply workspace:

Image

This is not very useful when navigating in recent projects, and I wonder what happens with worktrees… Is there an easy way to make Jetbrains project name inherit from this setting?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

FYI, Jetbrains IDE asks for permission about five times during setup:

Image

All I need is to click "Allow".

All service containers mount the workspace at `/workspace` so that file changes
are shared.

## Automatic Service Bootstrap
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I quickly tested both modes by editing a component (no re-install) and it seems to work well. 👏🏻

# Change to the parent directory of the script
cd "$SCRIPT_DIR/.."

# Install dependencies if node_modules is missing or out of date
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏻 for the check.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Introduce development containers

4 participants