From 46238cf74dc9470bf7eccfb0250572d967d02fd8 Mon Sep 17 00:00:00 2001 From: Toby Bellwood Date: Fri, 12 Apr 2024 17:45:49 +1000 Subject: [PATCH 1/4] docs: update documentation structure and plumbing --- .github/workflows/mkdocs.yaml | 21 ++++++++++++++++++++ .readthedocs.yaml | 19 ++++++++++++++++++ docs/readthedocs.yml | 1 - docs/requirements.txt | 2 +- mkdocs.yml | 37 +++++++++++++++++++++++++++-------- 5 files changed, 70 insertions(+), 10 deletions(-) create mode 100644 .github/workflows/mkdocs.yaml create mode 100644 .readthedocs.yaml delete mode 100644 docs/readthedocs.yml diff --git a/.github/workflows/mkdocs.yaml b/.github/workflows/mkdocs.yaml new file mode 100644 index 00000000..78fbaf3b --- /dev/null +++ b/.github/workflows/mkdocs.yaml @@ -0,0 +1,21 @@ +name: Publish docs via GitHub Pages +on: + push: + branches: + - main + - mkdocs + +jobs: + build: + name: Deploy docs + runs-on: ubuntu-latest + steps: + - name: Checkout main + uses: actions/checkout@v2 + + - name: Deploy docs + uses: mhausenblas/mkdocs-deploy-gh-pages@master + # Or use mhausenblas/mkdocs-deploy-gh-pages@nomaterial to build without the mkdocs-material theme + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + CONFIG_FILE: ./mkdocs.yml \ No newline at end of file diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 00000000..015eb5de --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,19 @@ +# Read the Docs configuration file for MkDocs projects +# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details + +# Required +version: 2 + +# Set the version of Python and other tools you might need +build: + os: ubuntu-22.04 + tools: + python: "3.12" + +mkdocs: + configuration: mkdocs.yml + +# Optionally declare the Python requirements required to build your docs +python: + install: + - requirements: docs/requirements.txt diff --git a/docs/readthedocs.yml b/docs/readthedocs.yml deleted file mode 100644 index 768f076d..00000000 --- a/docs/readthedocs.yml +++ /dev/null @@ -1 +0,0 @@ -requirements_file: requirements.txt diff --git a/docs/requirements.txt b/docs/requirements.txt index 17d39b8a..4c8f017d 100644 --- a/docs/requirements.txt +++ b/docs/requirements.txt @@ -1 +1 @@ -mkdocs>=1 +mkdocs-material diff --git a/mkdocs.yml b/mkdocs.yml index 73d8c39c..62716a39 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -1,5 +1,32 @@ -site_name: Pygmy Documentation -theme: readthedocs +site_name: 'Pygmy' +site_url: https://pygmystack.github.io/pygmy/ +repo_url: https://github.com/pygmystack/pygmy/ +repo_name: pygmystack/pygmy +edit_uri: edit/main/docs +site_author: The pygmystack authors + +theme: + name: 'material' + palette: + primary: 'blue' + accent: 'light blue' + favicon: images/pygmystack_icon.png + logo: images/pygmystack_icon_wh.png + icon: + repo: fontawesome/brands/github + +markdown_extensions: + - toc: + permalink: "#" + baselevel: 2 + - admonition + - attr_list + - tables + - pymdownx.highlight + - pymdownx.superfences + +plugins: + - search nav: - Pygmy: index.md @@ -14,9 +41,3 @@ nav: - Mapping additional ports: map_addtitional_ports.md - Customisation: - Introduction: customisation/introduction.md - -markdown_extensions: - - toc: - permalink: true - baselevel: 1 - - admonition From ebc9dcc5388ab57ef66dbf05b08095bb301f6e65 Mon Sep 17 00:00:00 2001 From: Toby Bellwood Date: Fri, 12 Apr 2024 17:46:19 +1000 Subject: [PATCH 2/4] docs: update docs references for pygmystack and lagoon --- docs/drupal_site_containers.md | 13 +++++------- docs/images/pygmystack_icon.png | Bin 0 -> 16684 bytes docs/images/pygmystack_icon_wh.png | Bin 0 -> 16385 bytes docs/images/pygmystack_taglone_col.png | Bin 0 -> 41195 bytes docs/index.md | 27 ++++++++++++++++++++++--- docs/installation.md | 10 +++++++++ docs/local_docker_development.md | 12 +++++------ docs/map_addtitional_ports.md | 2 +- docs/ssh_agent.md | 6 ++---- docs/troubleshooting.md | 1 - 10 files changed, 48 insertions(+), 23 deletions(-) create mode 100644 docs/images/pygmystack_icon.png create mode 100644 docs/images/pygmystack_icon_wh.png create mode 100644 docs/images/pygmystack_taglone_col.png diff --git a/docs/drupal_site_containers.md b/docs/drupal_site_containers.md index a7c498e9..bf119ed2 100644 --- a/docs/drupal_site_containers.md +++ b/docs/drupal_site_containers.md @@ -14,14 +14,14 @@ During [Part I](./local_docker_development.md#part-i-shared-docker-containers) w ## Find the right `docker-compose.yml` -1. Visit https://github.com/amazeeio/docker or clone https://github.com/amazeeio/docker.git into a folder on your computer +1. Visit https://github.com/uselagoon/lagoon-examples or clone https://github.com/lagoon-examples/drupal9-base.git into a folder on your computer 2. Copy the desired example file into your Drupal directory (see descriptions below). Use `example-docker-compose-drupal.yml` if unsure. 3. Rename the file to `docker-compose.yml` -4. Edit the file according to your needs, change at least the host name. _BTW: It's perfectly fine to commit this file into your git repository, so others that are also using amazee.io docker can use it as well._ +4. Edit the file according to your needs, change at least the host name. _BTW: It's perfectly fine to commit this file into your git repository, so others that are also using docker can use it as well._ 5. Run in the same directory as the `docker-compose.yml`: docker-compose up -d -6. If you are on Windows add the URL to the Hosts file (see [windows documentation](local_docker_development/windows.md) for that). +6. If you are on Windows add the URL to the Hosts file (see [windows documentation](local_docker_development.md) for that). 7. Open your browser with the entered URL in the `docker-compose.yml`, happy Drupaling! ## Connect to the container @@ -78,7 +78,7 @@ When you next start a bash session, you'll be able to use `ddrush` just like you ## Update Images -We constantly make improvements, updates and some other nice things to our container images. Visit [changelog.amazee.io](https://changelog.amazee.io) to see if there is something new. If you need to update the Docker Images to the newest version from the Docker Hub run in the same folder as the `docker-compose.yml`: +We constantly make improvements, updates and some other nice things to our container images. Visit the [Lagoon Image releases page](https://github.com/uselagoon/lagoon-images/releases) to see if there is something new. If you need to update the Docker Images to the newest version from the Docker Hub run in the same folder as the `docker-compose.yml`: docker-compose pull docker-compose up -d @@ -92,7 +92,4 @@ Just open another terminal window at the exact same directory than you run the f ## `docker-compose.yml` example files -| Example File | PHP | Services | Description | -|----------------------------------------------------------------------------------------------------------------------------------|--------|-------------------------------|---------------------------------------------------------------------------------------------------------------------------------| -| [`example-docker-compose-drupal.yml`](https://github.com/amazeeio/docker/blob/master/example-docker-compose-drupal.yml) | 5.6/7.0/7.1| nginx, varnish, mariadb |Drupal container without provisions for solr. See comments in file for choosing PHP version and customizing for Composer sites | -| [`example-docker-compose-drupal-solr.yml`](https://github.com/amazeeio/docker/blob/master/example-docker-compose-drupal-solr.yml)| 5.6/7.0/7.1| nginx, varnish, mariadb, solr |Drupal container with provisions for solr. See comments in file for choosing PHP version and customizing for Composer sites | +Visit https://github.com/uselagoon/lagoon-examples to see a range of example projects that you can clone as a starting point diff --git a/docs/images/pygmystack_icon.png b/docs/images/pygmystack_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..e27fab99f7e375d0050530caceb930fc0911b6de GIT binary patch literal 16684 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 literal 0 HcmV?d00001 diff --git a/docs/images/pygmystack_taglone_col.png b/docs/images/pygmystack_taglone_col.png new file mode 100644 index 0000000000000000000000000000000000000000..1a267ef819990c0512e06e91bc482d3f5323abab GIT binary patch literal 41195 zcmeFZ2UOEr)GvslpeP{HArylO(t8O_B!Ea!iqb(!=slrJQ7#YxK}13qq=QJ2Djlf` zgeJX8m0qQncLMj``QEH=+FLVg=FR$8>t2)a&nf%t_WSL9c>P3GftZMn2oDdBSn(lT z9S`qH9vOwH3^R4G<2E*P zFhOv;+c|=#@$e+1-5rfhZ4fAC6NH78y(Dz4vKGp0WhM#L5>nw+ag;?^T0Qi1Mre4d zYMOf5n2MP}rKOl9++knERu1;exDky_99&S6P_WeVJ=i(^JFGqOZ#e;p@wgj1^6+u<;`Vg* zpqc5v&pEm{+n!BsX3B%GMc5(iQAqGC-@nf~S~{Q{kd_Yr8$;G;7AX^ocf9Lp5 z*J5Y)?-WRsoGaMI-vaqhpGInWI3jq|5l9CYXH$fnD_ABAZa0oFS!aYX%E4LF!NK;Q zlX~*cl9~AhxOth`RE$ln>~Wj8_aDB3fE%L_l2F{aaq;nU@$zf(@xpioU_wG1y!cppD4z+Jpt%qq zmnff^5SO3;A0MBv5TCIazwkfbhdY?M;Li4+@01^a=-}t8N5E(LOd@xt$;U#8{bI{Im@JLS7VLMbBMQ zQ@t^J>EmPG?Qb0TjGLEa@rT2!CJ#6gnQP^!O?B-b9cgq}zw5-m@>*|dB)`$z#jS7T zsqg-Dxb(#{Ukd)Wvyz`q{?D69!F&1_{(h5uC4l3f&nZ4SUjF;FACv;P@bjN1e|@9; z=XLOt@_)v>Pe!Em&&O;Je&M|T*^eCCe+~Y(DE><<|D`Q|tHS>ejmVcH5ij$TK;kY- z3O(7p9QjMvSa{=@-P%;1BO?TjMUB77;i~40Yu&j^##gywFiMTZKNE)E#gokzCg1ni zm*hRMSVA(sP&CsI^NXK%#h~(JeEi9srilwj{Lnn8$qh1|M|1Dg3QeVsB?%Wk(UVym zj{3?QK~1R0rqMJu;^)K3COZaHKP>tbI^|BFZEVB{oti6kb25OD{ZP70H9)peYJ2z1 z@CaX$`KPa8(_9%ZsL2M*9nZbku<|dWH;c;i^JGrsEt0K7hwEa{z_RKPodq}>ONX{l za6=-onZ_H2t%Xq(1DW(}*w_P7HOlp#V!Ui7J=dEnG%Z?<>^;mPdbz5^dOmRhZsI4!7vHE=Ih&}KTOw|O1!4%| z8W-Aiw+834PB6Ra*nS1wo|MnkSHGB-coqzU9Z_O4Wxap}9OUm;NJ&IjfOQI`7GK@>O_~d+4^po-jK3eJIe&m}bBeZOm)t`E< z7XJ(Z$}ur>*~&bH`i&WKa6HcCJnmTH2XL505_ENxUOW_HOT>Fa^IkQ%iGcX@=pHRb z^?bzpzlg+Klvwdtvy5ODHo@7A@yfPp5YV3-k*eHwx=rxU%wS^Gi1K7xf1V>*g3Wv3CA?6b@`l6mVQtF7VBes{I0vv z|BO3n^yMFB1T>Ai62dFSdQ*1rvf5x9Vb z8q`I{V0$m>q8_ogeQBtRc5Wk;<$7BRti%~koaX-wqZ*GJ=YC7n4h(9g54#{LGu?Cbtrq+3J$+a>6@C7pzm++L=MBPnulb)r zfdvX%`E@Om78rqNyU_8#^asm-B}v}_Z_n4rrhltUZQ;`7UsXz%O(986aEbS-DFLNo za}IQ^(=;!>t{8+Wv7Wm@oO=TMNabB3T5fY$xMV4>%l*5;kLzaV_W5NETm@X zpMl|Q`X6b}{LXsF(6g`+5S8vyT;v{^jj1IP800)mAW}IWHdv$lfh*4A!;iFKq@pIh zBjZgj3%3VDjM>W3X!qJS5H|{F=N`?~N&Z!P?xnh*L|T?`&v$woL^B{}5u`^xm+raF zaxA(s71bH>v1_W-jV}!CyFxdA<+{epduKbn&jA+17p%oxxl7jlxJbbfsvaRD4Xt_K zk%rD~d7p&WVcru{4cWrQ+??9!k-NLS7i-~9_gsx&WM@nFgAr*BR&J*q zGD9msm^0(Kr*F|DnixqE9DS#hF0x-qnGY)HTZ7RE*-Y_?&pJhe%G!kG7Q8whmNe0s?~Piw=VS z2S9ODg8Bz^;3eGs|2|%sa!4nCUJL8pN5DCKFZ_&!!$)_x?;?7WZ_kG=o0B;)kre?g z^X^tYHv-)$9^a!4g$0PEwgqfWp^+C#K<4y}pL&wHIvni;4<#;Ts@2SOrtA}&miw+B zHad?}hSvFWz$FR-eV8`8_SZ19;gGT)%f=0|0ie$DJ+I#yv1`)?Amy*t%KaIt;7Po4 zHd|fIJ$6!=GmiozNzIlBPG`RQo+ysBw-=w zQ;-qKEWii9i&A_p?pU)TfSjvVWU}LId8lkRQGrn^$O*U-FU13GPeuQZ!usnye*JJN=T5|P+{{y#xwPU&`Bd%F%C0Ps|398C zS&>MKM4yhWbQJ%|unzqCBi4G|Kya=s4gdHULB(G`e$fM`$qbSczf6~mEqizsTOuJn zE%@y0=WL9LWT3r@`KXH$Hcwy|gk8z(!AG_KD7uPT zx$_?9K3?&6kA+L_J>Y-mBR-D>SloFL%*R^InTV&i0MeJUpX7W0bEPGFdS_c2&J{>Z zQfOp@V%@I0P?Ko^)jedG#_h<@ha)TyM?Cmt8h|90c4`}Ha`UOhnIl-XraAa5dJ#he z-VG+Togav!AXcEcqMhcNaLWIaG{#2R*>pkaAi0)roaN>NK`9dQ6|A@}+fkaNu23C^ zd2>GtB)YLo)zVHKIfH;ZE_Mq%AbJ6q5EYq)c=P@WKqyhS?%=gHtIL3I-X(~g+7@U6 zzRyp?kyf1Q^X-P~e0afAGPVDyu<@so` zZWW{G1&$tHBZ-5JPBN#YlT-Tz8`qJ_7@_x5YQTTYs~xW#Zv0vEWhCPfxgwx)TCHSM zlr6H`3m4IMGL4WKbs9%Hu385G zpA^1$EFQinY4E#wcWnW+aLTH5nmD$@y;{T?-JLq^x^a4~T0y$TGKi%{GJitM&{$F_ z=_}e{&EW%o2r3B)7Bz#-Zo(?DI<{lNn(SYAb#A49XX1-gio1VMYp#ow48SUgRk!TKI4Gh5r$6 z@8^4yQ)F)Im_FV!QJYlLzd|w6oDzw=IUZRJWbD7^`ox)DuS7hXi&5SsbXKCY1`Z2@ zn)H-n2bF!d&^ZkrKT9VZ7_#kX@$WRPCfHv8rnsj#awBVmtx+U`fD!>xX&#HJp@CO)Up=+RY-Nr+K9qK)ny6)s1o|_?xFt$! z^<-xv*5vcpYTEP?`zGlkPZb(nw!i_RePtHGa0~H@gIzX0tZhPq7XIPopm#iceD@S) zn)`-}n7~M`$Y080Byq+ut46tfuGsww!5CQR z+;|(c8l~*%&sZ$e)Y6}p+>gh7!wn_N`3;?R^}-*#adrY2$r`uKnqp-OSd!dHr;T(%i=F~59ZSgQk>gMi=Si$9 z?eW`j5j-s(Fm3aH*o!WgDp?4PCRoZ#VMvOQ7VlCgYjgQ6(Y7LCnkxezmH2~yS$bju zqHvi|Wg7UsiC8Q$a2eR)>McsQ^vn(=(r1W>;f|%Ou+y6>bEIS&4FoMa9vR0Uz#~2l z^WWRNn{_>TCd^0IVAv@e`o6tCEj_v74THXVRicLZsg8OH^=(*`l%=f9Ohpf0O}g}Bj7!Ivu$7l``WNkL|PldQJogixJvNv_csob~OFhfY7izaER% z_l-1rmoTerpSGYmrqkTS?oRi0xA%R>`sz9i7OQw>z31GI+c)BbTOke!V&g^Xl^zUz zH}M@(UsQe-Ew#wzMGK|xZr;s7PS%7xW7O044eiBy_G}@hI%H9Q0#jOE+j1Nx&_Zt( zHc%`x=RV!OL1GB<9p!67pgw~2ZxNyCQ4v7_Tk-q!|QRX zL@sr>m73#L+N^Cv#Fft<;!1T;9h$TL%d%5XEPbn$v*+Dqu1#5ZyEEk=?sVyjZAbVH zp*hno#hKGC31WuQ$f^ut{uX+RFt-A0f)69BoH;v_zFtR1g%;ot3N#DU59;5laIV&e zS3H^OZeR)OvgafUDW>)6dEWg)7QWqKHlhmhwuxw5TJ@DD5$`d`eDU;fueuU`>Il5f znJ(_|3AV<|)`Lap_gtqbvYcSyN|`(3~)=FyS5CgQ_mRo>fWz)^Q5=nrJJ^B3hQOyrfw4y?B2&G>ZU1CvDjK zMT(SGwnp@Qr#4JshLhRbq3+YB<<4i>ZQ*uHcTM$MeYZ)bJ!kJZq_(?wPWP;#sDp;= zIfp|(^}L1@X;$T0&R)Xhhmp9A2v*gIRK`cC`h5mjI-VelOY-9sgCbsuSvk$eKEz6_ zUp}SN+7AnR?+a5g#Etd5UhnIfKMeX3n>))1^%=7u(_Cb0uh#Ek2Ex4#go_B%;wa&Z z6wSR57_CN$zpcdDBb-f>wjx(_&7t?^llk~6HcH)&6z`(%xnJ^e$1?uEeACS_Ecwcd zArpDofuDrjl;rJGj;n=9MdhkVkVg?a8W_gWeIb&{F>N0sz_}r9)suSHhy$3Gy-FVm zr#jBAtAO>tomq9iTk8b!-9i6XyrQbvy$jqVMUGRu+uNJ}6Qa zc1cZyu%2}87S}q>x%&e{;%}v~;c2^+{&HIpGS0`KM$CCMPZP|IRGhDuWxpT1r~A{X z2209Asmn0TR~i2A^0x(=Js%bgB;=w(Rj1aaOglYjpME@f3P4GFYAgxqS7wtaL(QTW zC?L(xC`k|M77a~`4VRrCU>RX@4RRdPixv*j0USXN5RXjvON0I8Afe}SvDPzLEdU$^ z-b|TbmUkcDM7wnYOQ3eVc#O;l7pd&g3 zbH+`&`K5y~ za-$|xDtj1gyK~ntSc^`Z`}ZXofxxvRUW4>4J&hmSBJ6^ z2!^GJx*Ly9M*abw>L7L+5p@zK7XI3)S)1??(6*nUj8^wRBl^Z|*OWx21Fpn}R)r%bZ~rPhJ=a|08dh8tDO z*6o9l3WP*huH~JS1Iai#JYWqXtq`6v<7REvO64c)x?=?iK3^X z$T?g?vhqqOs_e3Ub#BfB@Luq;ToC^22ie2N_YA02@kI?ZiatXUi~&~bm(>i&#tWL< zEu~USaI~1y`ORzU#*?~VA9t?5&h%!XLRgw5daKtrdBt+&9J$3 zfx&NYN_F*g(tNsl99q~+YswHR*fy07+<8^8?UTcVb?@;n&6udRU+|DI=uYMKV!e`Y zrjwv%@y(T5`CnuK914Jd0+@X5(foykgrFyvoE+6z`*_l~CKdfPV~8BtbVcs0l1X_~ zXBUZf*HeD6MipedoPA|jT=kaQ!b|W6&C=s+n&+c%+t%Nl7%6VyWHzSIy@|ko0dR?ITV04mSX1dGOnZ^?r4g~!?+U@DkVm~1HNn(cF{-K4c z_OZ$2`!7B(%?o$hJDJEky%4aq`{Y8(k#;B4hbvLxT2-hyc0$28+cN!i=cdW1b^m=^ zx(vrzblQ(XpBZo6tI1)Jr(_S8#Muq4qM5j=FGC8FhWUGCK*+tC7<ZzZ{%C)6^}9_=oEJjYasOa)ZpOMUUN+e z{-A68>lCLz?eI(|~Dq(uo&spHp$?MgO8KsR{qlmw@is1>xU& zhW;=2p;&C^2&&fkiqcaGYjNs~jg>+v#nWnKBeK2?U)m1kJJ_vf244Ey-V6<1MV9_+ zy}r?ZdVRgT+UE2IB7AurA^TFhJg{DmvVh%UF~af|plOCM9zg@<^&3y)rC+1J3%5M} zQAFQoQM~ZN2rjgA>=LM5EBAG4RcdsGMBAMpxnug85A+Svr;?6r_K}1)s_0f+-C^&j5FDKmip|^<^cpy* zf%mCN8I~2X5Wm|=r866!C%38w@R6tQUeP?ZeRt!J_gCMk`McpFX}cCT`Yaronh514 zs6UjjmC{QiKTCR4-I8>v*t4!6-wDDcv%h_wLp(-uWQuL9{6RLAL{Im=+=_XQeTi{v z;$D}}haB08ox#4ttl@!;ilooma1ZGnF9ID?i#`x+)UUngGaVu zVF3?|J|9{J9$zFh&O zP4u3mMLXq}(vJ&UUJSFVdMDj8-p(I)7L+sx7*h>iQIzitHan;>gt%2+8rpK&+b?zN z?w~CYNSu(Xxp1<)zXIKw9CXO;n!F8wUBy$w+-JC80K{M>&ERLQNJBEJ;@p&EcBp^eup6p!*1)XsFXa zoQu+xv2W5_H?ZdW;UH(z$)_~0jd;rw&-6l{ccs*Mg8FQyVmY*lYxKdLj5_SUFU1O7 z@N-F2Z@GS7N$?pY!o)D0^|YmXxz}2&u<7T3c!fRNs;uT^g6Y611vq@MZV}MLpU`_H zAIGkz8nk65YMGZm1B;Wy=w<&}s%zq(*(GkW z=seNIF<*Gl6gp*EVef`S0@6w~my1G(uII~ZX{>2+G2^>Rnu*NQ1SSKI9`7GZ=8(jU zdYVsi<`t$yA*`O4GIc-{c+}@jpDiFU0uw&X+LbgQ_xM3$^Q+=z%(W02gX{v&GlwBubC2YSI)nh;hqZn)Pn=mANoTpN1OTcRc%C&ptabYtt@0CAHylUKRC z4rVymUT{EbQ}~ZTLa65TG|PaJvu-pthkT`SPV- L&rxjilN8t3C5vH2OEj{hRPg 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 Date: Fri, 12 Apr 2024 17:54:07 +1000 Subject: [PATCH 3/4] ci: fix references to broken upstream repos --- .github/workflows/pygmy.yml | 10 +++++----- docs/drupal_site_containers.md | 2 +- docs/local_docker_development.md | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/pygmy.yml b/.github/workflows/pygmy.yml index d7b79737..d06d2a3c 100644 --- a/.github/workflows/pygmy.yml +++ b/.github/workflows/pygmy.yml @@ -250,13 +250,13 @@ jobs: - name: "[Example] Drupal Postgres" run: | - cd lagoon-examples/drupal9-postgres; + cd lagoon-examples/drupal-postgres; docker-compose -p drupal-postgres up -d; docker-compose -p drupal-postgres exec -T cli composer install; - dockerize -wait http://drupal9-postgres.docker.amazee.io:80 -timeout 10s; - curl --HEAD http://drupal9-postgres.docker.amazee.io; - curl --HEAD http://drupal9-postgres.docker.amazee.io | grep -i "x-lagoon"; - ../../pygmy-linux-amd64 status | grep '\- http://drupal9-postgres.docker.amazee.io'; + dockerize -wait http://drupal-postgres.docker.amazee.io:80 -timeout 10s; + curl --HEAD http://drupal-postgres.docker.amazee.io; + curl --HEAD http://drupal-postgres.docker.amazee.io | grep -i "x-lagoon"; + ../../pygmy-linux-amd64 status | grep '\- http://drupal-postgres.docker.amazee.io'; docker-compose -p drupal-postgres down; docker-compose -p drupal-postgres rm; cd ../../; diff --git a/docs/drupal_site_containers.md b/docs/drupal_site_containers.md index bf119ed2..dd7823e2 100644 --- a/docs/drupal_site_containers.md +++ b/docs/drupal_site_containers.md @@ -14,7 +14,7 @@ During [Part I](./local_docker_development.md#part-i-shared-docker-containers) w ## Find the right `docker-compose.yml` -1. Visit https://github.com/uselagoon/lagoon-examples or clone https://github.com/lagoon-examples/drupal9-base.git into a folder on your computer +1. Visit https://github.com/uselagoon/lagoon-examples or clone https://github.com/lagoon-examples/drupal-base.git into a folder on your computer 2. Copy the desired example file into your Drupal directory (see descriptions below). Use `example-docker-compose-drupal.yml` if unsure. 3. Rename the file to `docker-compose.yml` 4. Edit the file according to your needs, change at least the host name. _BTW: It's perfectly fine to commit this file into your git repository, so others that are also using docker can use it as well._ diff --git a/docs/local_docker_development.md b/docs/local_docker_development.md index fce47c58..c021ddbb 100644 --- a/docs/local_docker_development.md +++ b/docs/local_docker_development.md @@ -23,7 +23,7 @@ The Docker Containers which will run Drupal. These are made to be copied into a ## What it includes -An example local Docker Drupal Development environment, such as https://www.github.com/lagoon-examples/drupal9-solr, equips you with all the tools you need to develop your Drupal site locally: +An example local Docker Drupal Development environment, such as https://www.github.com/lagoon-examples/drupal-solr, equips you with all the tools you need to develop your Drupal site locally: * **Webserver:** Nginx * **Frontend Caching:** Varnish From 777069eb01d0e13c279bdcc347668b8295191c28 Mon Sep 17 00:00:00 2001 From: Vincenzo De Naro Papa Date: Fri, 18 Oct 2024 13:00:11 +0200 Subject: [PATCH 4/4] Fixed some mkdocs errors (#584) Co-authored-by: Vincenzo De Naro Papa --- docs/connect_to_mysql_from_external.md | 6 ++++++ docs/troubleshooting.md | 10 ++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/connect_to_mysql_from_external.md b/docs/connect_to_mysql_from_external.md index e0da00c7..719b95c0 100644 --- a/docs/connect_to_mysql_from_external.md +++ b/docs/connect_to_mysql_from_external.md @@ -11,20 +11,26 @@ Docker assigns a randomly published port for MySQL during each container start. To get the published port via `docker`: +``` $ docker port changeme.net.docker.amazee.io 3306/tcp -> 0.0.0.0:32797 +``` Or via `docker-compose` inside a Drupal repository +``` $ docker-compose port drupal 3306 0.0.0.0:32797 +``` ### `linux` Get ip from container If you are on Linux and run docker native, you also need to get the IP of the container +``` $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' changeme.net.docker.amazee.io 172.17.0.4 +``` ### Connect to MySQL diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index 7fa663ce..70c21c9f 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -28,9 +28,8 @@ If this still is not enough, this is the 🔨 method: docker-compose down -v docker-compose up -{% hint style='danger' %} -This will remove your whole local MySQL database and maybe existing other local created volumes (like the solr search index). -{% endhint %} +!!! danger + This will remove your whole local MySQL database and maybe existing other local created volumes (like the solr search index). ### Drupal Container logs @@ -120,9 +119,8 @@ You shouldn't really need to do this, and if you think so, first try the above h This will stop and remove **all** containers and **all** attached volumes. -{% hint style='danger' %} -This will remove your whole local MySQL database and maybe existing other local created volumes (like the solr search index). -{% endhint %} +!!! danger + This will remove your whole local MySQL database and maybe existing other local created volumes (like the solr search index). If you get an error like `cannot create temp file for here-document: No space left on device` then you can free up space by removing old volumes and images that we don't need anymore: