From 9363fd19e4ad22621e0c7a163e287e61405b261f Mon Sep 17 00:00:00 2001 From: RocketQuack <202538874+Rocket-Quack@users.noreply.github.com> Date: Tue, 14 Apr 2026 11:22:41 +0200 Subject: [PATCH] docs(easy-docker): reorganize screenshots and document split-services --- docs/01-getting-started/05-easy-docker.md | 3 +- docs/10-easy-docker/01-overview.md | 30 +-- docs/10-easy-docker/02-workflows.md | 10 +- docs/10-easy-docker/05-split-services.md | 215 ++++++++++++++++++ docs/10-easy-docker/index.md | 4 +- .../{overview => entry}/main-menu.png | Bin .../overview/stack-creation/topology.png | Bin 5626 -> 0 bytes .../database-engine.png} | Bin .../proxy-mode.png | Bin .../split-services/data-services-choice.png | Bin 0 -> 6140 bytes .../split-services/database-engine.png | Bin 0 -> 6439 bytes .../split-services/manage-stack-actions.png | Bin 0 -> 6478 bytes .../split-services/proxy-choice.png | Bin 0 -> 7560 bytes .../split-services/redis-services.png | Bin 0 -> 6652 bytes .../easy-docker/split-services/summary.png | Bin 0 -> 7149 bytes .../split-services/topology-menu.png | Bin 0 -> 6255 bytes .../apps}/app-selection.png | Bin .../apps}/app-version.png | Bin .../core}/frappe-version.png | Bin .../core}/name.png | Bin .../image}/image-name.png | Bin .../image}/image-version.png | Bin .../stack-creation/topology/topology-menu.png | Bin 0 -> 6557 bytes .../build-image.png | Bin .../running-stack.png | Bin .../start-stack.png | Bin 26 files changed, 244 insertions(+), 18 deletions(-) create mode 100644 docs/10-easy-docker/05-split-services.md rename docs/images/easy-docker/{overview => entry}/main-menu.png (100%) delete mode 100644 docs/images/easy-docker/overview/stack-creation/topology.png rename docs/images/easy-docker/{overview/stack-creation/database.png => single-host/database-engine.png} (100%) rename docs/images/easy-docker/{overview/stack-creation => single-host}/proxy-mode.png (100%) create mode 100644 docs/images/easy-docker/split-services/data-services-choice.png create mode 100644 docs/images/easy-docker/split-services/database-engine.png create mode 100644 docs/images/easy-docker/split-services/manage-stack-actions.png create mode 100644 docs/images/easy-docker/split-services/proxy-choice.png create mode 100644 docs/images/easy-docker/split-services/redis-services.png create mode 100644 docs/images/easy-docker/split-services/summary.png create mode 100644 docs/images/easy-docker/split-services/topology-menu.png rename docs/images/easy-docker/{overview/stack-creation => stack-creation/apps}/app-selection.png (100%) rename docs/images/easy-docker/{overview/stack-creation => stack-creation/apps}/app-version.png (100%) rename docs/images/easy-docker/{overview/stack-creation => stack-creation/core}/frappe-version.png (100%) rename docs/images/easy-docker/{overview/stack-creation => stack-creation/core}/name.png (100%) rename docs/images/easy-docker/{overview/stack-creation => stack-creation/image}/image-name.png (100%) rename docs/images/easy-docker/{overview/stack-creation => stack-creation/image}/image-version.png (100%) create mode 100644 docs/images/easy-docker/stack-creation/topology/topology-menu.png rename docs/images/easy-docker/{overview/stack-management => stack-runtime}/build-image.png (100%) rename docs/images/easy-docker/{overview/stack-management => stack-runtime}/running-stack.png (100%) rename docs/images/easy-docker/{overview/stack-management => stack-runtime}/start-stack.png (100%) diff --git a/docs/01-getting-started/05-easy-docker.md b/docs/01-getting-started/05-easy-docker.md index 55d1038c..e3d5041b 100644 --- a/docs/01-getting-started/05-easy-docker.md +++ b/docs/01-getting-started/05-easy-docker.md @@ -14,7 +14,8 @@ This getting-started page stays short and focuses on the first steps. Current status: - `single-host` is the primary supported topology -- `split-services` is still in development +- `split-services` is available for separated stack setup and Compose runtime control +- site actions currently remain part of the `single-host` workflow - stack, site, app, backup, restart, and update flows are being expanded iteratively The script entrypoint is: diff --git a/docs/10-easy-docker/01-overview.md b/docs/10-easy-docker/01-overview.md index b05f1a8c..b1ee3bbf 100644 --- a/docs/10-easy-docker/01-overview.md +++ b/docs/10-easy-docker/01-overview.md @@ -53,7 +53,7 @@ Docker commands first. Instead, it asks a small number of questions, writes the stack configuration for you, and then gives you a menu for the most common next actions. -![Easy Docker main menu](../images/easy-docker/overview/main-menu.png) +![Easy Docker main menu](../images/easy-docker/entry/main-menu.png) ## What It Needs @@ -103,9 +103,9 @@ The Frappe version profile is the base version the stack should start from. If you are unsure, pick the version you intend to use for the actual project or the version your apps are built for. -![Stack name](../images/easy-docker/overview/stack-creation/name.png) +![Stack name](../images/easy-docker/stack-creation/core/name.png) -![Frappe version profile](../images/easy-docker/overview/stack-creation/frappe-version.png) +![Frappe version profile](../images/easy-docker/stack-creation/core/frappe-version.png) 2. Choose the deployment topology and the main infrastructure options. @@ -118,11 +118,11 @@ the site data is stored. Even if you do not know every Docker detail yet, the important part is that these choices describe how your stack should behave once it is running. -![Topology selection](../images/easy-docker/overview/stack-creation/topology.png) +![Topology selection](../images/easy-docker/stack-creation/topology/topology-menu.png) -![Proxy mode selection](../images/easy-docker/overview/stack-creation/proxy-mode.png) +![Proxy mode selection](../images/easy-docker/single-host/proxy-mode.png) -![Database selection](../images/easy-docker/overview/stack-creation/database.png) +![Database selection](../images/easy-docker/single-host/database-engine.png) 3. Define the image naming and versioning that should be used for the stack. @@ -133,9 +133,9 @@ The image name identifies the image, while the image version or tag helps you track which build you are currently using. That becomes especially useful when you rebuild the stack after changing app branches or updating the setup. -![Custom image naming](../images/easy-docker/overview/stack-creation/image-name.png) +![Custom image naming](../images/easy-docker/stack-creation/image/image-name.png) -![Custom image version](../images/easy-docker/overview/stack-creation/image-version.png) +![Custom image version](../images/easy-docker/stack-creation/image/image-version.png) 4. Select the apps and branches that should be built into the stack image. @@ -147,9 +147,9 @@ For new users, the practical rule is simple: only include the apps you really need, and choose branches that match the Frappe version profile you selected earlier. -![App selection](../images/easy-docker/overview/stack-creation/app-selection.png) +![App selection](../images/easy-docker/stack-creation/apps/app-selection.png) -![App version selection](../images/easy-docker/overview/stack-creation/app-version.png) +![App version selection](../images/easy-docker/stack-creation/apps/app-version.png) After these decisions, `easy-docker` has enough information to write the stack files and prepare the next phase. At that point, the workflow moves from @@ -174,19 +174,23 @@ The build step creates the actual Docker image for the stack you just defined. Until that image exists, there is nothing concrete for Docker Compose to start. That is why the build action comes before the start action. -![Build image action](../images/easy-docker/overview/stack-management/build-image.png) +![Build image action](../images/easy-docker/stack-runtime/build-image.png) Once the image has been built successfully, you can start the stack. This tells Docker Compose to create the containers and launch the services that belong to your setup. -![Start stack action](../images/easy-docker/overview/stack-management/start-stack.png) +![Start stack action](../images/easy-docker/stack-runtime/start-stack.png) After startup, the status view helps you confirm that the stack is actually running. This is especially useful for beginners because it gives a visible checkpoint before moving on to site creation or later maintenance steps. -![Running stack status](../images/easy-docker/overview/stack-management/running-stack.png) +![Running stack status](../images/easy-docker/stack-runtime/running-stack.png) + +In this example, the one stopped container shown in the status output is the +`configurator` container. That container is expected to finish and stop after +its setup work has completed. From there, the workflow usually continues into site-level actions such as creating the first site, installing apps on the site, running migrations, or diff --git a/docs/10-easy-docker/02-workflows.md b/docs/10-easy-docker/02-workflows.md index 02f3deb3..7b5b72ae 100644 --- a/docs/10-easy-docker/02-workflows.md +++ b/docs/10-easy-docker/02-workflows.md @@ -7,13 +7,12 @@ title: Workflows The wizard follows a simple order: 1. Create a stack. -2. Choose `single-host` or review `split-services`. +2. Choose `single-host` or `split-services`. 3. Select the apps and branches for the stack. 4. Generate the stack environment and render the Compose snapshot. 5. Build the custom image. 6. Start the stack. -7. Create or select the configured site. -8. Manage site apps or create a backup. +7. Continue into site actions when the selected workflow supports them. Stack actions are grouped around image and Compose lifecycle: @@ -25,3 +24,8 @@ Stack actions are grouped around image and Compose lifecycle: Site app management is intentionally scoped to apps that are already part of the stack image. The wizard does not try to install arbitrary apps that are not part of the selected stack configuration. + +For the split-services path, see +[Split Services](./05-split-services.md). That page explains the intended flow +in simple terms and shows where the proxy, application, database, and Redis +choices fit into the setup. diff --git a/docs/10-easy-docker/05-split-services.md b/docs/10-easy-docker/05-split-services.md new file mode 100644 index 00000000..5e02e3d1 --- /dev/null +++ b/docs/10-easy-docker/05-split-services.md @@ -0,0 +1,215 @@ +--- +title: Split Services +--- + +# Split Services + +`split-services` is the guided setup path for users who want to keep the +application part of the stack separate from the data part, with an optional +proxy layer in front. + +The goal of this page is to help a first-time user understand what each step +means and what choice they are making in the wizard. + +The current split-services flow focuses on: + +- writing the split stack files +- rendering the generated Compose snapshot +- building the custom image +- starting, stopping, restarting, and deleting the stack + +This keeps the first version easier to understand while still making the stack +layout explicit. + +Think of the split-services setup as three simple parts: + +- `Application Services` run the Frappe application itself +- `Data Services` provide the database and Redis services +- `Reverse Proxy` handles incoming web traffic when you want a proxy in front + +This page uses the clearer names above so the setup is easier to understand the +first time you see it. + +## What This Setup Is For + +Split services are useful when you do not want every service in one combined +stack. + +This is a good fit if you want to: + +- keep the application layer separate from the data layer +- run the database and Redis independently from the app stack +- place a proxy in front only when you actually need it +- keep the setup readable so you can manage parts of it later + +If you are new to Docker, you can think of this as splitting one big stack into +smaller parts that each have a clearer job. + +## How The Wizard Feels + +The wizard still behaves like the other `easy-docker` flows. + +It asks one question at a time, explains what that choice affects, and then +writes the stack files for you. You do not need to build the final Compose +files by hand before you start. + +![Split Services topology menu](../images/easy-docker/split-services/topology-menu.png) + +## Step 1. Choose The Split Topology + +When you select `Split services`, the wizard first explains that the stack is +being divided into separate parts instead of using one combined setup. + +At this point you are not changing any service settings yet. You are only +choosing the layout of the stack. + +This matters because later steps will follow the same idea. If the setup is +split, the wizard will ask about the application side, the data side, and the +proxy side separately. + +## Step 2. Decide How The Data Services Should Work + +The next decision is the data layer. + +This is where you decide whether `easy-docker` manages the database and Redis +for you, or whether the stack should connect to services that already exist +elsewhere. + +### Managed Data Services + +Choose this if you want `easy-docker` to create the database and Redis +containers as part of the generated split setup. + +This is usually the easier choice when you are trying split-services for the +first time. + +It means: + +- the wizard writes the data service configuration for you +- the stack can start with its own managed database and Redis services +- you still keep the data layer separate from the application layer + +### External Data Services + +Choose this if the database and Redis are already running somewhere else. + +This is more advanced, but it can be useful when: + +- your organization already provides shared database and Redis services +- you want the application stack to connect to existing infrastructure +- you are splitting responsibilities across different systems + +If you choose this path, the wizard asks for the required connection values and +stores them in the generated stack configuration. + +![Data services choice](../images/easy-docker/split-services/data-services-choice.png) + +## Step 3. Choose The Database Engine + +After choosing how the data layer should be handled, the wizard asks which +database engine should be used for the stack. + +For most users, this is the simpler way to think about it: + +- `MariaDB` is the default path and usually the easiest starting point +- `PostgreSQL` is available if that is the database you already use or want to use + +If the data layer is managed by `easy-docker`, this choice decides which +database service will be created in the generated setup. + +If the data layer is external, this choice still matters because it tells the +stack which kind of database it is configured to connect to. + +![Database engine choice](../images/easy-docker/split-services/database-engine.png) + +## Step 4. Decide How Redis Should Work + +Redis is asked about separately so the setup stays explicit. + +This is useful because some users want Redis managed together with the split +stack, while others already have Redis running elsewhere. + +The choices are simple: + +- `Managed Redis Services` means the stack includes Redis services for you +- `External Redis Services` means you provide the Redis endpoints yourself +- `No Redis Services` is the advanced option when you do not want the wizard to + configure Redis for this stack + +The important beginner-friendly idea is that Redis belongs to the data side of +the setup, even though it is asked in its own step. + +![Redis services choice](../images/easy-docker/split-services/redis-services.png) + +## Step 5. Decide Whether A Proxy Should Be Included + +The proxy layer is optional. + +If you want the stack to answer HTTP or HTTPS traffic directly in front of the +application services, include a proxy. + +If you do not need that yet, you can skip it and keep the setup simpler. + +For a first-time user, the important idea is: + +- the proxy is the front door +- the application services do the actual work +- the data services keep the site data and queue state safe + +![Proxy choice](../images/easy-docker/split-services/proxy-choice.png) + +## Step 6. Review The Setup Before It Is Written + +Before the wizard writes the files, it shows a summary of the choices you just +made. + +This summary is the last chance to stop and check whether the stack is shaped +the way you expected. + +The summary makes the split very obvious: + +- what runs as application services +- what runs as data services +- whether a proxy is included +- whether the data services are managed by `easy-docker` or external + +![Split services summary](../images/easy-docker/split-services/summary.png) + +## What Happens After Setup + +Once the split stack has been written, the generated files are stored in the +same repository-local `.easy-docker` area as the other wizard data. + +That means you can still inspect the generated files later and continue working +with them manually if needed. + +After the files are written, the wizard returns to the stack management view for +that split-services stack. From there you can work with the stack runtime, app +selection, and update actions that are currently supported for this topology. + +![Split Services manage stack actions](../images/easy-docker/split-services/manage-stack-actions.png) + +For split-services, the most important practical point is that the application +side, the data side, and the proxy side remain easy to understand +individually. If you come back later to change one part, you should not have to +guess where the other parts are defined. + +## A Simple Mental Model + +If this is the first time you use a split setup, this is the easiest way to +think about it: + +- `Application Services` are the part you interact with most often +- `Data Services` keep the database and Redis available +- `Reverse Proxy` is optional and sits in front of the application side + +You do not need to understand every Docker detail before using the wizard. +You only need to know which part you want to manage separately. + +## Where To Go Next + +After reading this page, the next useful pages are: + +- [Overview](./01-overview.md) +- [Workflows](./02-workflows.md) +- [Generated Compose](./04-generated-compose.md) diff --git a/docs/10-easy-docker/index.md b/docs/10-easy-docker/index.md index 3b005f8d..ff79c647 100644 --- a/docs/10-easy-docker/index.md +++ b/docs/10-easy-docker/index.md @@ -11,7 +11,8 @@ keeping the underlying Compose and Bench model visible. This section documents the current behavior of the wizard: - `single-host` is the supported production workflow today -- `split-services` is still in development +- `split-services` is available for separated stack setup and Compose runtime control +- site actions currently remain part of the `single-host` workflow - stack, site, app, and update actions are handled through the wizard - the generated Compose output is available as a rendered snapshot @@ -21,3 +22,4 @@ Start here: - [Workflows](./02-workflows.md) - [Updates](./03-updates.md) - [Generated Compose](./04-generated-compose.md) +- [Split Services](./05-split-services.md) diff --git a/docs/images/easy-docker/overview/main-menu.png b/docs/images/easy-docker/entry/main-menu.png similarity index 100% rename from docs/images/easy-docker/overview/main-menu.png rename to docs/images/easy-docker/entry/main-menu.png diff --git a/docs/images/easy-docker/overview/stack-creation/topology.png b/docs/images/easy-docker/overview/stack-creation/topology.png deleted file mode 100644 index da81592892cca4e5e3ef073464d422bdd5f9663e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5626 zcma)9cQoAH)*eE%M2R{~bSC;3(TV7t1Ti`jJ$mmYN)RPl7>p8$8lxM1$d3>)T8QW( zS_C0_MESh$eeYd&ee3(8z*T>b z^xBp6PP>!Q`ewU}9k z2LNRFMux|%q*N3d-P<$LgFshnsdx7Dpg)$N_4ru8(7sm@8NQM%T8PVF=7_HRi130g z4T(}VcCox3%-Mu1r%!(I{|c>yzkB5R4QAgL^>E@*)HpKy2!7 zUlCj}_@6eK<~5D2@iLZJ{*XgtySUbj`gyd^ zKVo2aiZbzb%lTLqxp${rM*w@a(q!0g0x_{+My?R@zb;td_20e8Q0!c};S-ak1XrH>Br zvd3(D&W9UGHr2ek$`rRLK&XGGnSW;XHP0+m(YccAg>9wu>@#n=$;NB316x9I$;Hs@ zZ`aF4d}Eh9qoYqN^J<&4-0@G4_hDKS$uh2d&@29KyK0sEC>0@DwSANdH!>Ngq~pz? zyWT)|E}kOzUK2e{zS$ZnF+=|XlelSBUPquvl;)^UtU{K;@7iOe0rp!;#ry1CS_YPT z7ETM?K#x?EoMd?J;f+m33O`BtnjPA?4=mM90!8fn562lFu#!l24Bw<1&J|I>)&bra z{#|_^gX-zL4h2Ss`$#wmxqws~9n{%@Z*D~mEDRSpYp;Q)e+jfYCQ|fWcDzP@2U@N; zIK&rQ!j{T*zV=q}&Xk9zCZA}Qo;TYwU?ifKyhcEdGVX;zAY>-& zRZ&Ae5i)j=O=W;*q}ti%@tRKW%=V0({D4akG9KpvsKfXQD& zMI6EytHYLtH`agB73j0xJsh!a5^+-Adp7v1FCp`X;bA(z?>nv z5CPZNj0`)v=c2|_zR&3;t~9}WB?<0+^1KxjWX4rE-8NR&yQ)?*<^K%QK9It$zl`b= zZM<>O!3!BbPlqK~&STUXvy>zUDQk75vR~(2V*1FX7Ue>#X zq~B}LelOe@CoBy!><*K`CyKxYA@fqaJ+xrG3vFX>r!e+>x#6w@)c#O&T(;&quK-7E z&`0pr5X!?nu*??Hijy|Dnm2(KfxB2h$kaptjC(IFNwT9Es@#T@jB?nZ1hyM#5>lq+|BTH zFZoPJO1nRV6k83URbNm+iK?PFO_#qK%auuaQ#-6dfCFS7*I`n!RMd~2nLJMi%P7wd zf=yvak>`|-bE~4xOU^1=cAbX-OW&m5r$xiW)~QRW8om`5a6N2Q-+U7kILSl$TJ&DV z`8CeRIO)_KU5GU2cHZ^AyA$Xum|S)}av4%FTCu9MXM?s^I4iM{;sle%N|uqHPDwkl zPvcP@lq(_n>O<6QPBuEqLwxWzWZ&KtMZ+}LQAiB5n5tny=CLryHQ4Ltb7^-p(0@6cDH+DtU z%w)%0Uk06id*J9@3@_c*C|(0|#UvBM(^T>FUe2cdiOb({7&3Iz_ZED^56Yzv1~n|g zOPev}h7%S6rA~r!<|UjKr{S#Mx^)gG{NFs>XTE9fv!W~*#Uq~B(unB~OxW6CW5tww zA3Oy6J=4-21k6pNDhh`D6LLK`ER07u z>5xJU*`?x+$=s*b?FI)W$6`M~$TtHMQJ!*R^pf-GsN%Zan=u=ITHjgymiUMX z{`AbNTzZd#;T5S1O*V8=Y4h}WaVT!Q*tXemf(7W$Jj$RxY@?u^u_8e{uk8c&Z$@+K zSX;P8{1$~7$~WapB z4BKu2G3CdB2wkpF+cwI-`Wm$~IPu>ipQ|pnX5Zv;k@!)IwCjJm4ZM6^CUYlb> z2i_iA(jk_R5=_|@K9|e9I24N(*YfbhCpC4%>FTIEGEI|^dPc@{!new|(_pnro#yDf z9}8kz!zyB49gGJL$Smx++wJtZrG$Y9m3sv=nWplzrkt$Qfyd~WFv_M5v3Qo8S)%5k z7nWzZ?ms_tPp3P(gdUE1zwhylna@$u%YOmS_Q)Flw6m(aw+gBobatf~`h*AGijK|c zQH7+oo_p_y1UqEQ05#Hh(~?C4dZlP zO4ZoWkj|1r)g>kG@1<~bY_s7AUAjdqgpk8)t4}>mP`*MOht$Z%&}w%%>*63qW+-O! zi^J{!Xr$MSB))VwasF80%jIe@*QoPEfA#%poGL#Qc|$Q1_24I?`v78mnMKTrz}q&G zkgI{Rt+Uc8*{f)^Glxl=Ou>T@QFOlBkjPvz_Bdw42}!lw@wL^+YOQ5kk4JF*G$T~{ zeiQ$Tf{s~PVp&y?O9;s3RR~GqE-02i#Y-qDDh{FR2 za09#4*9TG(g>M$kKA%iVY3z^`2;y5>-~L8^*2R0iRjlINXz>e1r9L&@AY4}cQoY(5 z7|6bsnJIf0oB3xj+E58N0(IXY`wM0}(;`4&)c_!W*(|fAXrvwZZdN(O3~+0y6OD{X z#>;%i7ORSW+PnDvsAW)?)zI^sBO^VzS%4!d<$;vphnEOsYd9Iyx?ba=$M^l5aO^Y_ zOhN0P#Ad+9&9|OBOYHpIp(p+UV_e8Pt)lFO<@@{=W6Ym5216Rs%VOjw zF>Sd2E#U_?UjGu@$JNkvE+4laN7}!P>u=U(*0w>|kCgRnv2Ke}s-WdY5uQ-`R*1y+ zyFY9Z>}7Fp9=WSW{w=kiT!#mwVop~?-G7=U{o2obtgW(31=tzyjXy%SId}SUNl7wb zI_KeQKE0W{nVz_OSrLEhMR%}#rXHC-St4T)H|a^k%&S2ZYr=+6-YkzF@(5ue_9nY*ecmdLy9|dL! zFg=$<&pg8?2WJCq>7DzeA&v@r^9`#6H;tpo1W_Pm!0kurQe@zq9w%zG4CD7Vy~MH{&!NX8J}cZ0&C+LT^mXXeyG z)dWIgPk%&G2@?~v7``{9H>D)B*7HXt{xwJQ?vD%Gh{s0Rx0e_o_7^Sh@=&V( zHuGtMQq+}e&IgNAb5CS|D@l&H&qw%WiBbb^XTPTj!uQQBd6gbaWObc@sq)Mda}cBB zntNYehl)p(OnG`QrpFUVj1amJkg3C}%#nRYB}uj_{cP)D@B#zJ(r5W=G7b|F9JKNRS(HG`iQwyGB9AUh;SB&|U7eJzL2c>P99>P&s`J%${f z8BNk|YzC|@N;W~r)js|9GohK)r)jIp-nL6g%}3+!zJ5~s96@9<`@vM1(HxaJ1qi~I z<82{U@af2+b5=_w zx+S=5e50{P?j}Q@aY)1NH&v0}<`h2Kvx?7stGebsu~#pCNBkkyhpd%QIw94@m^$EX zoj>I}#-*K?7#BLW$G%^u@R#e2tDfx@ZZ4~?i_2`OAUlm=k8h@VBWx}5hO!L~H9gA; zY-X}nlnnD(-e}L07*aO5(cIoric#@t314=ufjqN31E{mbvgAH)Zj9p7Q)(8R*BJv* zYXhW;Aa1Tt)-NiPx`khJK^v00Z!fIgE6YFHU0L3?qEV`sBfhNg=gd_$o9L3TukQn( zLiYrNRz{;RGbL6;A*3*Sa5@G1$#adWoj}$Ii~(ZBu20DH(UH{8@hqV;2@dW-4}@%j zT7Ap3IHOGlKSj?d-u>O}9wDPPk6)+cgf)d~U<1;~L_Y>$KUF;klPMh*!O*B!vIHT# zcD!0z%B4kY9ddEIkLQWY%!{N1F3G6vw=fxRxN`S(>FTTJ47p@M=!@w-_jdq9|9x5* zMM?m+5QnAC47sU9eG*yx384GlsQkn`o%rb@8oGS14)%9JAxnLt+f4JG+^PEDIf~zr zB75RW^QluW#3@BJY_Aa(rQR}aqb$W{X8na^1aGgTP3ZIf-lnR0?;z|6 z+n5EVJ94;)Dy;C-zq$^x0ED*w+BvTHk1VE^mLWI0{z#2+=A=;dD%97OstQ^l`z?j= zhNdQvf`jo+D@<%NNiyy+^(9sCldWI*0mArSbeP;3T4jyJoZSu z8*$Vy2o#f}ozLM1OP@>@iVJVcy5Goap8U#e(mwId9`LEfsIfRt+l<@3qJCU(D3SAdF_Ss~L^MrskHzY0M zEIUo-BRt3mFq@>Q8DdA!HW`Zk^Q{8pOj@ie`$g~jhlI(iQhSdF|4fA!V%P%S|49P| zd;~k3ElE~Zk|b}%{>4XI;rya-U!ncK&)mNc-v2g`)WYju2?;!~`?Y^vU7D(TD%DCh GQU3#wA;H%G diff --git a/docs/images/easy-docker/overview/stack-creation/database.png b/docs/images/easy-docker/single-host/database-engine.png similarity index 100% rename from docs/images/easy-docker/overview/stack-creation/database.png rename to docs/images/easy-docker/single-host/database-engine.png diff --git a/docs/images/easy-docker/overview/stack-creation/proxy-mode.png b/docs/images/easy-docker/single-host/proxy-mode.png similarity index 100% rename from docs/images/easy-docker/overview/stack-creation/proxy-mode.png rename to docs/images/easy-docker/single-host/proxy-mode.png diff --git a/docs/images/easy-docker/split-services/data-services-choice.png b/docs/images/easy-docker/split-services/data-services-choice.png new file mode 100644 index 0000000000000000000000000000000000000000..7a356daff14346f946bc84b82d7d48f7357ea733 GIT binary patch literal 6140 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 literal 0 HcmV?d00001 diff --git a/docs/images/easy-docker/split-services/proxy-choice.png b/docs/images/easy-docker/split-services/proxy-choice.png new file mode 100644 index 0000000000000000000000000000000000000000..6c8a79eba8e5b0d2861a493c55e1fd68dbc44aee GIT binary patch literal 7560 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 e)qj3%aa{O-gA@%KR=u0Tpt6EGv{KF@a literal 0 HcmV?d00001 diff --git a/docs/images/easy-docker/split-services/summary.png b/docs/images/easy-docker/split-services/summary.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5da88cb1adff01bc9542212b1d74a948140fab GIT binary patch literal 7149 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 literal 0 HcmV?d00001 diff --git a/docs/images/easy-docker/split-services/topology-menu.png b/docs/images/easy-docker/split-services/topology-menu.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe8b8f179883d59c4875adf68ce04407a4c9d3f GIT binary patch literal 6255 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 g`V&_F^Km>UpszL`cCt{<`6t{J< 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