-
Type: Epic
-
Status: Open
-
Priority: Minor
-
Resolution: Unresolved
-
Tags:
POC around new Docker based developer environment, see: https://gist.github.com/akervern/3df5b2e2474b9fd091cd553da17be14e
Challenges
- Ready to use containerized dev environment
- Configure tooling (git, maven, docker, kubectl, …)
- Cloud tooling available (aws, gcloud, azure, …)
- Configuration? Persist config?
- Third parties tools (Nuxeo CLI, kafka, mongo shell, …)
- Build Java and NPM
- Deploy/Build Container Image Output within Container
- Build Container
- Push Container to accessible registry
- Update Deployment
- Helm => values.yml
- Docker-compose => docker-compose.yml
- Build Container
- Enable Docker Dev Mode
- Container environment variable NUXEO_DEV
- Live Preview
- Java Hot-Reload Valve
- nuxeocli hotreload
- Web-resources sync
- nuxeocli synchronize
- improve to take care studio sources
- Make it more adaptive to target env; docker, k8s and local.
- Debug hot-swap
- Expose proper port; 8787
- nuxeocli synchronize
- Web Browser Extension
- Java Hot-Reload Valve
- Persistance
- Configuration
- /etc/nuxeo/conf.d
- Data
- Configuration
Possible Deployment:
Docker-Compose (local)
Pros:
- Easy to setup
- Sharable data between runtime and dev environment (local FS)
- Shares local Docker Registry
Cons:
- Dev Environment is ran locally
- Doesn’t fit Nuxeo Helm deployment description
- Might not fit production deployment
Docker+Kubernetes (Dev local Docker + Kubernetes)
Pros:
- Fits Nuxeo Helm deployment description
- Proper step for a production deployment based on K8s
- Nuxeo runtime can be ran on the cloud/remote cluster
Cons:
- Requires K8s knowledges, Helm, Ingress controller, …
- Slightly harder to setup (even with kind, k3d, …), requires Container registry shared between local/k8s.
- Dev Environment is ran locally
Kubernetes (Full Kubernetes)
Pros:
- Doesn’t depend at all of local machine
Cons:
- It’s a workspace manager app that we need
- … but it’s doable w/o, as a POC-of-POC, if we make a very simplistic workspace management.
Implementation differences:
Feature | Local (docker-compose) | Local + Kubernetes | Full Kubernetes |
Docker Build | Docker CLI | Docker CLI | ? depends on K8s container impl |
Docker Push | Local Registry | Manual step; needs shared remote registry, or impl specific cmd (kind, k3d.) | ? depends on K8s container impl |
Java Hot Reload | Nuxeo CLID wraps `docker cp` bundles into container + HTTP valve trigger. | Nuxeo CLI wraps `kubectl cp` bundles into container + HTTP Valve trigger | Nuxeo CLI wraps `kubectl cp` bundles into container + HTTP Valve trigger |
Web Resources sync | `nuxeocli` synchronize based on `docker cp` | `nuxeocli` synchronize based on `kubectl cp` | `nuxeocli` synchronize based on `kubectl cp` |
Deployment | docker-compose (specific) | Nuxeo helm chart | helm chart |
Debug/Hot Swap | Expose 8787 | port-forward 8787 | port-forward 8787 |
Browser Extension | Ok | Ok | Ok |
Data Persistence | Local volume on /usr/lib/nuxeo | ||
Configuration | Local volume on /etc/nuxeo/conf.d | Describe in Helm values.yaml | Describe in Helm values.yaml |
- is related to
-
NXDEV-9 Dev Environoment v2
- Open