From 1b0ecc7b3914c122cefa57afc9632d28dc6e0953 Mon Sep 17 00:00:00 2001 From: michaelschal <35957947-michaelschal@users.noreply.replit.com> Date: Thu, 10 Jul 2025 15:00:06 +0000 Subject: [PATCH] Automate application deployment using a simplified Portainer script Adds a docker-compose file and deploy script for automated Portainer deployment. Replit-Commit-Author: Agent Replit-Commit-Session-Id: dec54137-d5a2-4406-8ad4-5f2f9fb110bf Replit-Commit-Screenshot-Url: https://storage.googleapis.com/screenshot-production-us-central1/0715008c-7244-40f4-befc-26c014852236/6766644a-420b-4242-91df-d40e1146cc68.jpg --- attached_assets/image_1752159543446.png | Bin 0 -> 26233 bytes deploy-portainer-simple.sh | 58 ++++++++++++++++++ docker-compose-portainer.yml | 77 ++++++++++++++++++++++++ 3 files changed, 135 insertions(+) create mode 100644 attached_assets/image_1752159543446.png create mode 100644 deploy-portainer-simple.sh create mode 100644 docker-compose-portainer.yml diff --git a/attached_assets/image_1752159543446.png b/attached_assets/image_1752159543446.png new file mode 100644 index 0000000000000000000000000000000000000000..e6e9009887fbf87d14fc7c38ee4ce476bbff70a9 GIT binary patch literal 26233 zcmbT8by(a?zp#-Omlk*0;;zM|SaG-FzBr4^qJ_d1cXx;4?(Xhx#ogV%?ep3>?|Z)M zI@kGQlk6m!OfoZ@%$@tUfeLcss7M4zP*6~)k`kgyP*BjDkmU{pILP$Lc)kKMgLY67 z7ltYwCEAC4d1ERhD+C2q5sv(1@D}nN(N;pk0SXGO>(2+e4_IIf1qDEp6cti&)jeME z)>cv7xO<&r3~b~LKs8sOG|Qr#r`!xM^KE;#7L=1oSz1zX`gw%{6;-glwxW7c>5dEm zx2v605#y`chkG*QJ`@_SYM9(m#BV%UEdDFNE%MXHXCr_<01p5+UCuYww<$nkd)i<+ zTIN2s>~Ok#NvIKL@ZIiD2xOp&hLX<028O_q(&*o8f=SV;%#1ba6cWCQ{h-8uFc zn-Yr!lU9+ScftRbfgS*=2({_QF(QeYKX`w8BfWwamEh$2zG8v?dPZ6Ag69z_NWpso zb1eh@e$BtbwO%t{4pOGO-1q9esVZ$QENt0z5n7H(r-j?1FE$&v!yjufeq%Ttz#v^B zQ@;*^`q_L2UsRp>7kuGKE%<)-Lmg+vTj&*ow4oX|u-2bb zz^?D$HB!e)OLMJetef1dgGzhDpf?iq^9v|t@S~>@Od)WZz`4N~yC;^Q(&shxcc5_Q z7rneZf{Z$}>sse(WpgyGE4j$m|02+{or3E}7#H-lsEVD6HtGal_f-MCtBXDI#61@G$*# z;xCdI6Y|@(TMB4|YCkZ!c~jc9XEeY#kSp&+A!=$B%o-9qL5pS9FRLx@VUH~oEL<$I zu-+GidUKArP!mfG4Kr-k8V)WPH`Id(%X zD<{nVz6bsvI_>{qmnH*VBhP5G)Y9iqpS8f%viYMQo=0fOeg5kEIdy0=h#;SS&qQQPe2BwLqit{K@?T5?3@jF-oB-P`0Yo{Ai5#?VK4?~3P;S9aiz zLu#5Ucv5~Y9LLW9%}QXGGPYCWU80kfzI^`jd{~@DJnBHI0Y3Z@&heh*QE|1PZuLw$ zTSVD0=E4C0c5{L*ba#o?*^*h%EwkDhiah+Z#yoBTTWVL5S;1R|B;_2Kkp zMvES<+Y5H%;4b)qlZ3+XhLX0J6XCA{gi>}#*PSv1n_SY%A1ZLTvYy_jcwS%Tm zPua_Q%S@Nfduvsp?T9=Mq0AjpX_gLSLp`|d`L~yvOHM)N}D$Wpridl+)g> z<93^@tfk-OUk~aD1|HPiD1j{T=!C(OO)jUiJvCsB0=Bo!F}1PN#P9_V7x2sA&}R;|sdv}DVVr4NF9-fK9VvZ_bY z(p!lkux4HkRNi+h`A6Ir#NHtZ{-+~=b*OQLdOKc<3n*<`CD()W#|CyAT9;esLe}u% zY88$)HJPrS*5%I|&Y)!P9t+t%w6N)e{lm{O(40+ph9mNy4u2rSY73Avd`#;c+Dv3^ z4)3Zy9K(&Sb0^$SzEx6khsG_7bX_@uX*8^?+p&FOW8m4h98I^$d!5g$KMY!kZosvE zeLPo8^0Wy@U$|`kcr5Grb^UZ^iFIXX+hGcvW1RXsZ{1tpN28nrbP&wyc5=^<)28ut z3JAyQSk7BoVq)Okw8HKb!vxh57qzToB`;5T+O1LD)`Bc}Do_vQNU;XkALdb!Gz#Vv z@qE~@2w`$R9P-$A#$8;d`nmSR4ZFJxHjNI5di9cDgYLD(v8uk-3Sd3IVVYNU#TXkv zx0erQ(KX_M=2HGrso|C`7}vwQw%V5h|D-T)aZ2fY(fpj4zi|1&N&WTLS)-L|Ti0V< z?uu?AOtpl{E^sF?$C`+TjO}+CNlcziez(b++XMozAIEZ7>RDsdO3t>2kRB6*8=`!< z#%52-N2l6Dm?|UtTLX)vNBg;QUPU}iAY199O`QbNyxD8*D7tf)wO`m$v&uE4Tdrqf zr7H|9R1T}XvWr7bDQ7Dguy2NslsHxE2jl)eDEgYV)#C2v&#g~H9Z$M@a)jt{ARZp) zjqm_YR(2FM%c}BhDt(56j_G6CPyAIr_o}lKh?(1mN#~Q=KdnGZy$BxcD3r2Osy7e3i z*jCh8rNMJ%f>^5f-TY4ymOPGB$kfBKA3)avUIfLRLnDFJ>Ur<)ZRyL>_C>~{-tmp% zyn8((+e+iioe9|CnZAD;<85*`ch>L~~GHRG;wE>Fr(!3ztkZ1A}S~ zQ-ZX18eGqviA-xrT<2Yb=;>#)31^PAo&75mqsFrCicn;Y7_(t8OY2olc!d4ez*7Wy z5DdiiIkzQHZ<~x1LY(JA0@)RZK|# zs(nQ{T7SRp?mmWgn01_R)w?DysbfPQi9A`rK@!ceS-CTO-*GVCx_v~~&CdtE8l06N zBEkgZuqvq+f700;fxT3rPT{UYP+t=()M!1AtGWnAFEm!wFXtnpAGVT=3l1@0^mr<5 zF58=`^%QUu@>0l+dbR65dtG;;)wmuE%YvkyynsNy*xG5X2S-4aQk& z37$4L(@9Yj&9>0##UyQ4G8j}Iw9Z_#f~IcZ8uYEpiA@LM&sv3%Zr8o|}0Yc>ySjUHAWHdEpkYzEfpiYa)@4Hx%ZVriL511vy} z>e42KcT{5tS`53>^Q&Ix^HcWawBJ^3ha1=zhT~6)wN-4tFqWE2OLu6-7C%InIInk` zdZc_BW0qFd;t9Ry=;bsT8mK*1s`9AV@p;;~x!u-O=GUU{tzAtD2izM@xp7nVD)hcZ zJ)Uw?w1{IO38|t!4O?oOF{B&ou)A1?+q^N7AL^iuCAtJe+oj8IzYeoVr)RS=a2x~G z=KSsKZ7o;0Y`WrtH_y_o)0v7?3@+j(Z|OPW&XzpiWqic9C7vxQ}qz970#r10ij%Yx^w3hxrW zmTG%^yGw65(k`_Kb{v=R&?0k+akgy{5mRVCW{)Ehdj`M_ye^NjK!LXnd!8J0mhFJV z!qZC6fzyQ-g=N%vY40fI%~qg$ez@Ljk+Zg>o4Yd$87eYpn&5n&=nyE1hFR$zEE4}pf``7B`)|!o+6~zdP6GI-@(Le{?%@v6GR5;7Zk_mbuc!w*V?%XQzdNV9=A z(eyqbk5bj4?UiMAckZ$ytlhG56?_WNIzpIrGT@`k58>3B1Adwk7jiOBT%b-mu187X z7Q~z4vol<(2#xx!fUOdzJaKfFz+6CaS%xfGhD`a9AI@7@0lbT|u32BfYqWOXEkI&g z`@?`IB^9g{-zZ>|NU~*8&*Y51ms{T4 zW_l`WF|;k+ew*?LTr!P`na#q({W`ASH9nV%W9wAGf&u_%S4;Or|4eu<=eR)Qq<#qyfbfYb49X&+yKJm3`+wIcQRGD0n2AlH`YW7{;0Csy2bzN0b>uG!OQpb-od zYG{13A_pl2@7mE)8YblW95hw%ZlYmdDrsV;NmmYd)A&=7gadTPKcrX&tfCOZptz4` zW$V@0f366IQQQaw<0@zbE_}vMnow_HC32@C)4=?oAXQ;Hc#>X?xqfHn@@yi zrNKK=Bek~}pejQ&1^xy;A(zJ%!t_Oz_Cc4@Qtt+AGkmUTs=BMPRmlrrrOoSp;^dw& z0m%FFT6E3w5U!$~8r)@MY8u_72ub6U#`_rlNRRFdWZQ+;>f?xs$MM@B@!;pRxU}y3 zA%sxGTD9$DDne3)_JuL>nwCAdMR9#A)rPdbz?rdfW!G)V;G7kwm%&m zGPacUqQ7^46J&%a`eS*l8=sEmHfit5w%8u<$sBn_QLrW=@nduXeyr%s3QLX{;mJ&6 zn3l-oC+tQ3qMs?ma>iL^4`}}V5HA1eG?eOGlb+6 z45!#?_wjvIS0E@aLBK&-B4NP}-dONhDz7Z8w@tv$Wa`A!u%Dl0#~rIr47i1PuGsc+k;T(zM2nc^8^NVME@K<5^Lu=eCFv$ z7**5*lmkY|h4cNZC~v8D_?sdZN^b8LEt?fYp1DyMDGwRs>=i4FyF8k6vU3Dj<4tG; zSx$ke*5T^lE>@>=1M>$CwL5b+D!R}s^#cTu1!^xP@Mo6|p-oxUIxm2avSm;rEU9-G z-y!t6&M%jEmCR-=@zU?Ug5RN+{S)bs(5pV{Qas+6Qdk(G1LNxOQp~V18s@Di$u;EG z%FsD;n;fiEW!0j@Y%xI?aEK*^mD=cLyk+Ly@cQf`esL`_yj36fb9VWtxr2y+aD_8d<3P+Io(!NU^+b$S~ zUn!bIozs8Y&lYeLmrE8l${?J7ecy6!f(>|i9MFIa^5;kk&G;kFWADmVyMxY8&aT~a z%9eaJ@ki2z@8wqAF}-4w!Z6zO`Bk%xBs2xyyAW_UTB8<9{tAGPVol^{_m(Fam24ni7}p_(yB|BTC@2&J7jT-5Wxh_7K}hW&E zv4jYIgSjL*P)4Mr#=>ZBk*V?s)qHm0o0rD@JFjC=)8+36b#)Okb)i6`S2N7_RixXYHx7+Xq*c{=bg6Xe#QyU1fIC)bL2!pHcAvD!*FNF8qyGzFVN4@gL12HXjDuFKq*!|Rp zbE2S8D(hEhv|dL(CZNk9^Rc?(?%*~1HumotGg!oMJ^#euQr@&-_ZO)9$IaoL&6@1i zAX;J>-Na5z`Ikf=%Wv}PekZO3=jUbLh6NmR8wv8~I<2>k-G>a_j>2a%-()`47e78? zzE-9?UqHx?H3*8 zzm3xUl4)ed)@9Nk&ss)e^oc2&l;$03nY^2u1R2%L=VFg28FrB$K;{F|uD&A#Ogqai zyczke)X}?XYr?acQUqGf_y<#U$1ODs7&G_DZj|PP;L(1R`h57@!X+9zmaQh8hNNwi zxu*2Vd546LO#g%xvV!dPFIR3h1TXM#+NGZaPeqm~nLe6joUE9`z!OhWdQk*T=;furoqliPUQO=wamMxwu!w? z0L}2ZP|~%AS2qqb_}KlE2N<2!Pux#)IKM;(bgECz$5qBYRhBhO1K+r;?I4*VNvuZ7 zJC%gxownuWO-6vzaIA+jx||pHFU&GqH#`q)F7jSazn?C}w>akc#81{nHEu$w>b>|p zmcPF`HK8vPQJwaj`cZmLkJ|g>>*jf!o1@!l9YLDb#!0!#H+sccSkNZwEpEqQPJMrR zdqu22i>Bon2--EssR&MR(enn~o~$$`tZrLX**vP(2!`z}gYz{W<-Myy^43s{_w-$~ zL*qYlY!cY8blCM75LM@f4dz~Z?AYTzj~#uyUm(Ab^8g#pOElYX0H@^gTKd38ZUV6* zW!O{GrdTh!)@u(ua(=&y(@Hrt$~KAufWT?GO(69c)9;!5_$p93N!f&M32|xQ%aJ?Q zPJ9g-c;+9>A+#+$s&V<-C)^xGYp>I)hL9+vw=dpj99rgvcQV%+mxWL@&5a-me?iv` zUOd{$Im~-AG^buJr+Xp% z6s=@@`wOSe)Jz|qYc^`#gB#KNM`$xfx1GBXhiQ)kp7P)0wgj?45X9;#W(2ilipZAo zTaQEhUPrw^BSPFt>WX>SG3EaR0S0lvA^VxA$35*0`=T?1(4Fr>e~w?txOOijF}huD zbz@%}>kC0CHr$U$cIaatTQJTXck^$NT=)5>oK&!ZrdSFI>EbAE)ZM zlbt?dSFL9@bmJbJA)p%l$f4x6fF=w}K7rz8L|++zL7H(20GTsFQdtI0h1z{h-duAD zSzP(nx&c!4>r$O-`Krq5J(?C=B-jVb5Dbu*fi(#>f+jk}=hz@s@rX zo}nOpm>_vwgAtM70e;i@VkSw$iAnOX_x)Ycl;hcdHr1jJXQTTkKbh4^F{-k$CKlg0 zUK>Gw?Er;YYs+*u`p#Zd;KySpL)s3-_=K^LFcY^WVJ;4}_EAWq0Y<-?_8lLXTQ z=G7J*IUXi`A?DBGX?+Kk#&y`~{14P0W3e%{zw7(@g)0@Q_^?L!hl^Ny;qOw4ViKB% zbWEE=Wr(LH2J~)@85=Wp^)a*i03EpsnYPXqG~Yz$)6TnOg*>#~{kA)R4Wf|eI~i9{ zDm7Xqmik2(WFUd{-8qli%0v}6sW_HsLcDyx1n)`5r~f`=kuUVK#@naU`g>Ou=Ssd` z@@HYA$+^j!iJS-t1QK7&C?3B1XyH{1k+X{tzzN`q7gu1f^GBL$JDQ$gUN2;$pP!3*PlNHG*=^t zq(my?V-U+7NcRkDkxI;*i|oNM8eK+Tp2JXv6N^Y(%ez7&CEE$NXNjsUXX*!~?mx3H zgulB7$X9*t=-v_C1U}3?aIw|01#j-jz(s-`-|)L-)CeS6aRI96Iz#$?gw|W_8*4S{ z=WELxB=(OE3vO=1REtL3pBYZFg|pIq#G7L)J4;bECmqn!`lA+!UCqVW@|ru*~g~4*xkR=}%K5mV+!lR?bqYLp<9BdX(S1o%S~-;WP$! zwM08-h)~2-VKE&);1dm>T$jvmyT+_YW*>qK56<(%ry$s-S8NWJiQPjD`8r?j(|eim z`Pw&hy|R0EUS@3-Z&2Z#HZV4(?75T_gAdE~pH9oYV;A#6qKtmC*kx6a!6{%6{qh~O zr%mc`ar}@%lc#Me^I9Or$1xFofj%^zy)IhuqYp3kTv~>O(D&3dYoT)3L&+t$aa>6; z%U_5;BCIC1udZ~}c8A@`F_X`uk6BDZ8gN9*VZ5zqFBQJK_r=3XTW4WQl=oQMjrz<} zUtkJ;K|tz%fKda#7;0H&)x8T?Ytpl%yzJFG7kCb!+w7DT(}wh~jS!7nHA3?4onc@+ zif!OE_Hl=sC9tJ<4X|LpZU}0c)Vdn6xLSFp;3txb2iyQP(nF9wihfkows6L6@~fwJ ztYqL;W)x5sMj>Via7*{21PPmSCza-{^bosLEy0iG2<wEIVU=gRF}yNfy>yq<+yJXQ zAdQu1^beb_lh>hL@;Dd1eW0cv^N`}Cu>Ib93iVp?M)9kpf7}HIssJ=COmB#o-4iVB zXslwE>N~Dp$4=s25yU|91csqLjkR`W2mEpK#lfuVgbUJ^L;+=!`h!C&w<|Pq=Up_z ze7XX`>QpLHL@LKc`>M>Z@G0i`skG>i{|25GrvqJ%l#nHMhZqKnOUJ(D!Mm*^)x&jH z(6NQ>dsa6`H>8<3P`)QvaX!o|;-eD9d~{7&zzA??U^glfP|P@jzm{D~C_CbVw=SgH z-dJp+lE6i+izpRdY>I;GaLZzI4!C9Z7*{A^c{DKm2ijPFrqQwQTa(ECuK7OxC1oM@xpU93PyI6+`_ zo`oyXIsE&o5AQ7#D{o;B1igf;OPY4w7)lL$n=0$<{5Iu12}#23%S#1DdUGY``Z;0& zu)m?TIrk@LihOZ6U<+Pbi2FNR`M%om=I!?fS2zmnv^OCaKi(T5WF&MR_n2X2F0b*h zmvx&8GYbKNU)#fY;Ul65-q3q8_&^B>e1Gs znIy9vS1WHD$g?ozs;)PXCqKn2xo(`B?Yu?p^!QNEFXG8^BorKGH#0cX&4^@0jO5Z{ zL@WJT6Uq;4k$!0twk?s_%*9kwbb=M}giL#_OhoXhEZV&j*w%jXZqzfZi#C{zCWRJc z?hfy3;t8OX6(u-}o4;$6bL{>45XB%mq9=DlbI8#C|A88?U(|I&df6frQM^Fi-a&wHlom-o`i$g z@I?b;K7qpFJdyX3tM`(iUHqTvuGG?G5_5gCWXW-6KS^R-W8+)VMVuvI2QWdEhBV5* z6-Ucf3o#kCZ5I>!&4pOgh|(LzvYdVB>vM(>6WiqKERWv^;C~2UWhG7R?l#+ml~1Kd z_nZJx$|ZMIiSb8z%?YFtRNxhqa}TzkU5$!q)sd z_neRzLu&ca8H;MVtu?5>;7u5Nf@gi~>1WdF6-^dK0^W6Nf`3vkLh_tEO{6Jj#bb=& zt3YDXs?qYbIHGuDDDf9r4+93C)Ud|RH!s<6ujPdSOa|&H&Qwz$9256KLUVeNr_BYk zZ!ER)r6{I2t&B3&@dp&A61a^RE$zJxSF3n6No^)m==~yw4DQdFD%NZJ;k$+-yf3FXkABtT4E<=J|O^uLPV4-vDxTy2= zE%E(W0TbIdHdBnusm{>t^2mi}l-t6%JfM+(dYnt;q=a{FSVsQr_`1Vqk+{e!*AJl@ z!HB7jf|*rD3#UBkvho279{T+_+ry%hIH*}3o5Fz6gs)ph+-`?t2k^ImQgU4vvgG#mcEY=vA4r-C^<^qy|z2Imb4U$sK*$VTM5u#vpD)u`s zVbWFM;{+~_GG?coFfN;X$2`6y!UkKp;Jg#xP^NePiQdd60%DY3Iy;4&wgfoh`$K5E z8WRI^7#zi)r-cClGKK&Z3{{uD2%HiaZNwm1gR~{Z4O4l;jT}kQ+?jW0uC#P0h&A}8 zoBjj`W9H)=iIBQ|Ak+F8t_Q4Wen@nph7URRzPRNsPGk#BTt}8HCFva;c6~&*%Y zyL%8n2zPFF&35u%jLE@TKqO>6)*s_aO><@H;EghVBh8|~qp1bbJK|aHTVgpvyN3J-Bq1&kU`+=>J z;8qv-ZP4dQ8#Ywms)wi6XY{I92%fStSvGI6cKp(Kswk)3d!?vjmBd(@YBOJoWb)`Z zpULZlb)77kgClXr$6R%cloxDXcYiM%033;w-_D#k7&rfX$Z&fz? zAxxZ~?HUF~v%?`I%-0t7UL&9ol9ah}OUrZpKIb61`st1gim?ThdDa4NGH%RgD%dS+ zGunD9|3_N$a^oS$Yu!mb$K_??if_%Wfj!xG<89$X0VX_Dyuid)v=9 zzrp<@dbuCe08S&|`S{A#;1?Qm*&7jZ`A-S;t#`xd(MUX&0H#C)4}zi$x`q`mptCBM-n_7R>uEEOjp#+E z&RMU5dm>q3B3bO*Icsn+-N^b(mL|E_2XrQM=R2jR^l(4iw+L`JOmy`XLo#bQBK8fw zxPssQaKpkaH4;rME0-H`ccMJWU%AYjU<+cD`}CRNo8u45*BN49&>S5*oG8oEI+h$< z+;03AEKb`;$KF0t^>LQ-3QkF-!X?+=~Ai@IS{I`K01q zw{X<0%13B^cile7!REmItFa;nOR=+BR+cVa4UtRv4rnBp+JQ&T$u-XYLuMt=7V%=9bmJPIjOYJVhO)Hil0ZpeR+@nCoOpU`8FK-Y(ks@=Mn3KbD5)sq~Y)A z&y8Yq_vq`b*LxR64WU zbN|}^U;-`OfwKONAIu@IRCWB{0T)27<2~A->|M)&O6IW8RUxsVJ zG*&Ckeq=SE2N0@B`$!&5RM5cc1FIgbc!sAX>;Mf=@j03IzU!=YFNjsrizBcZb1f6E zuye@D5QzM5xDGvEms@6P&uy5{ZJgB>PoNG@9$H7n$kOdZKt|R9|nr^D9eaVF`zK#cF7#Rw1TG11Nov2me=wHOM7|PX8KlcR|5@<<;4d|v2HvJ z3Yh*22tA`XNR2ZA$nq$+OPgy+uGsnfV)AbHoJV*_4rg8{GNr0r0(yfEq;D=Jkowca+-RFMDb|+Ov%-0~LX*5~s~_`wYr~NR3mU zh8@O$9}g8MLK#+3uJ@OC)|}RRk7Mdl+H>iXO9}^$5A^=UaSaoo7j-?XmyYuXB-CYY zW{JYQ^K$pWUq{mg#$>x*+kIAdj$P^QP1ZWv4eqE*7Aux?%pB4`cwO$Iq&Seqt>K2a zMZ^DAitJQ=T^`G|Q*LMq&whY@zRy0Ak^6LCW0>?1(%IxymKhpG9K=h2mUog>-G^|3 zuWuGwa!m6qOMAdHu{NJ(m9FPywkE(kT$FY&7rk(usj&p4reu3I5wJ6V^pN$!&^WEJ zoihXS5OJNB4-?Jo)~IS}buG?+j!B{3nUeo?U!Ub00M}KmmF}e^I}m6Xygen4f*H%f z&i?J_vg7w}r)&+w zr@$E$A6-)zKD?}p_wxgTvJz0yM<`kqz~W|jWaOU*6p`m`m(K=!OLHnp_*%|ym6hTN zrMG;mXOI8p2MI0zI!<{^r4o^`J7GcX!j5jGkE=IXqTwuMF`X9-->UK6eJ15QCq|)C zimRe7oM(1xEEJe_01^iq zz8bu(J@Wo@6rTsAy8`Lhb2_KPrv3?Gt%vKZhL@&>G+N}t=ggRvQwvDDSZdRjnU>E< zm%$E@kw|jA3NK|==-0!hl&El&m zb%CVtno<5*96ZA6pq)OKRCoKqaIW_~>t`$BSh?dUWupic~JQapmje`+6p^+ybO1 z`kEKU8&8A{Qi!Z@b~*Fc;*pUASUu9F>GiC5K9s2zZr$^uEDb4j8LOU6*(+KSByVTs z`yjExIzldRBb-Y&Iy%)L;UtaQ@9>wiDDyjlrgVW+*Ro`ED)5`8! zN6>{g)5WI()5C*NfdeeGMUD4cZ{1pdm1r}1K@=~Aw?l+siN`KS=G^r)s04#j*q3o0 z9n~%58fga3&EH~5vhPwPm78)sJ!5kNG>E->ovkdEAd_?MV;n*^hb%Aqm$^nS!PwW! zh+kbds#hu*#YxY;+U7xJFUt34kj2AH z0@wTW*$D}Xj!fDDdf@Xc60>cFdAZEMaa#K+Fwd!cdUUGbI<{vT^AA7#PT5nB_$I;M z?mx{fpCKqsTB&O00{F>_+Q8X1r|ST=dL#lsOwiJw?X9o3mlUE6{TLpZl7BB|;;1o0c9&Z56 zpeC!4dc{Y&@F-;vpE&%6(P1h#)sTXbDkrQT0&5dj0mLsOff!;nHSjg1@VaJq#kCA6 zV+d`v>m#jowKZ?)&^8@D$%f%Co!29Va1uIPqa%ua^!(zVXPtVA0A_R2+8Hr;PRV=7 znXxdo>eXVNMy z{g#JahkJ}O{@oWX8OcKPLNOM`kc^IF_)4BlCFCo`Z>y1tjWpkp*}Y6F8Z8-(5&$Dl zyJ(DYE;c!vlA^;1R6KU*;_N&z*?r$+9!5>RR<0JqdmqM$ngP_)=12Wr-3T;m90i)j}Ja!JT(!rV8syJQl@tW;3xtq0yE=`!n zV@4;)M{dset%51PXJS-EM-oK4ziyW6pMEiPIr-q+==&hDco_T4e*$ zl>6+4pApFhIL^!w?z9Bpz0@W8JH-9zVbN@iur0-T7Y+`6#0-se_h_f0&+|N^?u}RF zcWWt@Ux=DmHxpLHhj#rVIsAjVTZXaEreh*P~{0aNnTDt_ye?&%A1f$B_&1a zp1^Eo+6cwo%K&-NPl$+sp&%Aw(#Noas$}c2`QC#*wc3}qhl*IMv3bDzo%r9soO?MN z8rCO^a0O=xSAWgCZ>y$%np_l=wLa;4K(4&lg~8BKUDJX{fO5cdF_-IlYMn%n16W44@lRF?7|2Znr&^;1q~_s;iAW zb0w1Q`kLfKp5}@Q7b8S(J>pJOL8lHus0k+d$Mk=9zTyt!SOplNdk_R4Zwq*G<9Mb# zflwpnzo64Q0B@JF@@p(@%yTNLZa+d(@8nj~^2HlRzbYZg^O1}+X9xjq39V*rWdWa(0I9T;L4tc=7$jU4iT;4 zqQ}9A-cXa6V2oENQg(_ZnkOg^sxa$g+t@BY#3cRNkeib;1A6fF!iYd&XP_`uLaCB08?mY5VWMo%+QWvr^{5r2_ zGpul!fT9BEfN?;8*rJ0f_uG z;il6R1Od2JU%&HEeD5Scl$=ybi|rK{h}OvTn$6_RFj-4#5TzigjfO)_eB~Irja!+f zBTEoiET8EcL$_d+kfFBeCgaJD4yOep>Ye0uO5jcV}8sa)-x|nOeoA4hx@*E&x zero~n11(bKPs*Ro`?Z+^$NQYKS!NBM=P>G*gR(gHf@j(67KzdrCNtr$8i9AU_%Svd zaAEKP%$^7ZQyA366PZ&GtEL*U#w~&6{ji!^WNM0tn;(g1RoF$bI6`W5ie~`48gHMX z$7s#~;-6C;JEe4U$LEn0{zdb_#1#9D|9eO*MIrHQIMo#H8#Tvb18rGXA4b8r?Un??%Wa|UTfVPvHx%u# zYPLioRT)YuZvcGtl-F_{x|HY-x-&*HhM3PmkIstgRSt z`FU4h{v$w!%)*F5ps23m2}y4@D;x z^flx)zDa{kFy*HpMMki;td=BAVk-~9>jO%hY*TvRM~D6cVu=VhA~K`-mzS><*{!4*z0D z|NUpgVhwdn?KAyn zCR|)WH9$Ap!4S&qaH8m5wXM;!wXw5cmF=iKUOJ|^eQ!Trtss8qZ9~z|1eVZ5MM;$v z;;vEeAC6B`#Q9vmNEKwlOyz~&1Wgi6*5%sesH4a`-H}^jHXEkq}9nPVuL ze}2Q4Hi%@}mdP8dE(p^LbNB8ykS_`xPN4wp3ded7HtUnRSuWsTwEn9N?b2QulR~*~ z{9-da#A}l{8Mwxip8B?Om>8X@X0;oFv6Oi%ks$c&z3pCi4SpVn>3L9hQNdqKbVhdK z-rYcsrFB#>v-@TVHq~tHA;zDWkA3e>(kqud5M|wtHPk z$&jvuN*t-=X|D#Kf_aCW$7n-_UA*EcMP#aaa7q+3LfBW8j5YYHk{0*U$5N91*UkxJ%ZFG`?+SLPb$ZS&Rm3uS9>-FrO@@EmM=HcR_?{Ck1S+JGUX;6*;swxh5IT4^BV~Cx3j18u{t| zn)Yfh(vgR}Dly5%7(%}HHN+>l9}S<^V!O#5ifw5nPmC; zo-@|>EvcKz5V}j1*yhyc?&b>Osd-ZRIa*IP^ET&XMbDKzy~;WfqUt<#LQwA+LtyPUV%QO-XE zOuCY~c}LHg)3VTinw4)@)C*pm)W*DGIC(r6rG^NLx&kF=s#ZT}Q)IE7NPHoJU*q|* zsJ+{&VJ;WfkwJ~|f-Qb@Rdhvipcmj|X$ zJPhhm-QZ5Ieun45!!&E@p;T;}i=w(r6a4bx#ap(5Xs+NT}Jg_w3sD$Y<_rI~awB9Fy+b5h#G}X!ZjS+?P z*510e_#2FN4Z$y_H`TEN<&YRms~3T>TCT}8`s{s9SbUy&V)ZF?o__>Q0{-Sc;(4ul z+Cn>$w#f7z;_eALQ#U@5Lo!vomBnoAtzu8uZt7x%`8zvp)z!SfNYk(C4d(V^H_qF& z%^UN)TLnlJWy;;891oG6p2#UR29-VfMqerW{?0Km17qk@D(vdVp za;34RE8GVvDS8LKbbTFf!!Uv-?26XxYbcN<&Z1gs((bUk8gV9$XbQy z%53g54f9~Z<;@i}PQWqy-=a{5#^tUFZgQ>i_rOheo4;$vCbp;|uXT}KLT_r5d^%m1 z`(bShCDseQPj)Bk3zt{=jne7rn{L6Y|}LKxQu^R)R~l%c%No_hZ1uPIaT)Iy*GJSwEOrS;dm9Yya- z9Wq!r+P0#5TQ=dfY=48jL6Rl{qWBHsF%POklwK_FZ+laovha_ zZ-Z7k9l9^4_lQ7a8gmzRmP3U>5$N#K9y@s%V#R@Dh1G{oLiH zwhFCBANxda>rW^s0CP6EXMG3!s?XoY!ANPCT8L7;CBPG3zf8*~ob9F`@h5n*c!<+# zCfzf<^NICw+oUW+b5nwh5rk>F{B+jRLUq+dJcumeT~cp-qQ3&a1%Z9L_D!Mcm{JAl zNK`!Auy{w{K6DF?Zj2gToto0N_eZ>df@!PC#Y1 z^wUO}b##wQUJKqu>_2(z!>mHR8+XxdLcj=dY)ka;pvyEYrh>->k|l|zRe_N@uy;8# z*YjFm!iGHz+7WcSy(pLxXe= zFz-ga@8?-htnd5tzW??b*4k^cuWPQguVaq$+;2PP?qqB2!VA7IwAftYRn>04I?Z%F z{MuUnc3g^z?qWo$`>G1pPy`R;R<_1!r4dM>TP$tFme?SK9kSmC@z!Gw*mn+|FG15{ zolCjbJ(-y7JPx(6}aaNhWLZmfy0&(;v{G@{dedRti1)cApld96^2ck+W zt%=X{ohSp&cS-YwYZ+c!`iYGG&J9~0@+XE>(PDX>MOsH#xj7- z!uKW>7?331l$`24dJ#a_LRfrCrO5Fzor7?XLMPa&No_BVOec-e@jmexNE z^}L_42-uz>tA8Gv#WN_1*vy$5Oytwo0~8&7zji)KJN zlIz#Z8`q1T>2M>^8b=AVt_ltoX+SGjT>_Ry?V6$Z9s(_j6Xlep#GPx98Am-~NImj> zt+`o|AR{s1qo~l=GfQCYk{As?4m(j23sR#>c7<<0MVpTsf<5HghMNW*`4ep`?ToOU zzRVa`57jblg{mShYWZN_1y(8QR0QR2?!Bw`rE>CLjX76tN zK#XFrpqQ5JJ9-G7_DLj{6K=f9lowbmN61#+V_NlZiuqFZH^nT-CXKs(cUD87c7UmT zearfrHl-d}7yyLGj?}%i@4~w{db`*PnA>P(4m6Ea z>Di(Mw^S80j?G&S$NB6|ph^IZ8QY>*{&z@fV_TJv2mzcP^22NFMw4{JC$Ue^Kt?GO zjH0VszK#7>s3){nF&FPp zhtuf{1U&TG?^7MO2VbteB)~!rcD$S1CpimG2|3WeTS6sAeK_!nYoH$g!Gei1$vjcP zA(tg>8x9C`($&YMW#2x#k8%N?aoe;?r`J-tgrYA^Ylk&~Bm2X*dIaw3^Vm`0ci994 zx{n8{1aG?IKKZdvjpQ6iuh_E47_!cM{W7u`E=Le|ds zxk>|>UH{_;h&1`>+Gj!Cqm8lVN{BH*1Zhb=JHQoRf;O?I(7*K`iLX<2ES(pPWO)y9ZKepFFLY&PAsL+uJbvMOTH~qVo%koz2boqII zc%cru9sIXX=+P4P@`5K+&+lH`Rc6};Ib59XUtLNn_d5Sna8ATgO80WKLvA5Sav!+p zZDuet0B(Qosry(L!-I`@D2>JIsEeHUX{j-14L%KsdCKJ zX{@|*&g`x}T^z#QCCn99-Xw*?Ia7>#6pLo0??|WK^0}FHvA0GhxN}TZ+W;ZA96=J) z+7*VCqOsgpF;vMfzUE*qQ;uY+UEs6z+cbxUAV7@6EzWVCT&duMJqSnipis=lr&QZo zR>8G&7RT&xw?eEnDL^rXq*dP7l9?>r&2aj772hr)Wv^bZRs80sDJ@sK)rYJi>j#`* zA$y8mBKts`TLVQyGdr(QSMt7PHlQ0Rp#U@6OVw|Q@I*uUPPodu8zzlSH;VZ-idpJ^=L{SE)B?cK0JDgQm06HbQ{;4WcxBmS=_-P34&%Rk#(~@;q!_n2qbxG+RH>pVEd%<6Ol|zVMVvG-aCJ2DVukAmiLX&yUHeI4bW>R zG$B&%u2`pImE6bp7~2*Y1wdl#qM_@&r1Za#xz%<#;RE|6tnk=8V){KQ?z12TZlMMa z`uEea%+o!jalF#f3bh3JKeK1(ARGAc4)h3@`)uf;9Ritdg2OLozIw8 z2zB9oJgJO15#RzL=?6j6pZ38apV&|ZE{Kr-MnUQx%2{@+ z(-Wn0j{?(G2QxQuT-A>u5<9p;@H}s_`z3j;i801l&|3j!0Nzpv7%&IOq$ukJ;g=Va zS93~!S@zqedn_+@p3XH|Pa#>kX+>#`Y{-qqm5W`%uzrapKG9 zaeX`p$4cTiA&ZV&$@F7O`YG4n<{C+2vi>6Q&XRrDltsTb!CNSa#@1M>D|+lln8B*I z#r6`kH|&k1PtuoU{#cAOqQT_349MxWq&d0Z8(7kShR}iMFq*oXH3Xfmrvp??Q zqxZ|`Oy(bhkhVoFZ@w(;53{I3C8-L_h2FO6*Ogz-MPQ~;^!ZMm+jw%69vAneI`tZ9 z^A$$SL09ptgcb!gBq=s1x|jE#g}#ppX4opT^+Z4TUhUU~?E6ugM5XvO18-QO+`P&I z63uSo$Kk*0to4xHgp4yMrVyyNOG9F?&y%Zj_;m6RH4#6g;tn5@#lYtd|VNH?0EZQK3l{G8D>0Xu~my50RzGG*top_*cHz!U}sj}Thi zb8nrZJ7nG1r2-UXB@%-2mQk$oX}`0e?B%wMd@5IPVGS87rIJ~|zFutEMeTxodikxD zBNEN9(U?XTJp2!!he^|+ZyhJIyfKoOFqs#~IY!J8wNN|$+vV`ds2b@2w;_fn7D4z) zh44klgF_NXD^CPUUf^6URUCzlH4%VmXJ*}ZK5%)l^PVnwsO@30J z<7~^fn{!vIUmvM&Seo&i)|7J_f6j3g;{mKNRQbbl0=YzJvOrCQm!jne4flqltD4I` zWmq~567n_lw)>|w)-*w(4YsRqHW(2ra|f-aFFdpDN3(XzUW|wl9mn8cqRFP*x?eGo zQ(yI3>zzw$STC=V$v_ZpOmuaBFn%I?T1dpue)q|VyJn}}aIod&|8xl-f8jg6wTZ@K0trCmj!xfGPXOoxFMFk@9^yo8<#i)Q{iGyog(9l4J z6QbzCk+4}f0mgU)Z)mRkmUPtILsyPO8%o9aMA!;ubCF1AiX~&RPU?W>knV`Yd66|K_Ukzv0hg!xnIqe-n$tUh^2PjekDZYB;Zppqs zeFNRDU%O94nk;I`xO5q)BfD~5^w0a}OtlyWhr~HN(R4pZt2t38j%sq}otD7KSLQso z9E)Gs&rx{M5Ad;a&AWe2Rj$^gCZ&=%Y3K;LaIQJr`hcS_qS8BL0F-4goR;`L!fKbz z=4^|;^VM;$>~`+JRX`gFJTd(`Bbwe`cz*-LmXav{Y3omYndBCB+LK;`b%sP&Kfk4n zNk)4DRWr&YtD+lYEqN7a1KU>Y>lr!zSBMkneju%3AEPys_%sy6hSEt8)>zccuR28z zi>`-TQzHLCcIx-HBI!kgOYvFmJDf+=_`kWw8fnq%5Q_PN-;XKOy{$Ep9~VN;I;Cb5 z*K^~$T@7#~`*KEQefZ(XjgZX~^@~gEk)Z{;$<#7b-c0S%-GqN5DMFgdA;L*sBPZ=t zRCzjNp5EQ*YuFn$o1FLjSmB7>Hoo3+8j{1pg1^(Uvm!&!)d&%zcpmg{lw{ak50&rf zQ?CebDAf&5sn&t~qI9fu$9Q%hF88>)*4TtKH{1z~w%oj|tVfj(V7nWFnf8c!=8fM* zW7CfSo>R;vUcbT5{HKc>nRbrZlvVX@{fVpRKz*3gB<8OiF~m^RlGpys(1;j= zr^`fsfpz?9^NSV-wP%?DFwKsA zc0M<2FP^I|&xWpj`!&lk`IjH{NpvYSpO!TM2>wHt=n>ivO1t9V9*a3WDcN*Hleiwh7xorN&U zFwnSuV;JS07h+Qi=y>A$Pck0QdDD*Rt$;?%7ZvkRr4Jf!8g-AdX5pFbUfQvTZu2oS!W?{?#D3CbhuktVqJL%4LowUOIk%5#fQG(d3 zNHiNhyGN$vO>h1E(E{CtUmLCUKqv9jqAU=4?JjX={CzUQx5O`n8jlQ79h(Q%r0)Ke zzU?SPr_VfFCY%(ify_Av4&aQL#QRF^^T+1L{0t4&YxXZy4V}2#H6-^B*j0e<+E;Wx z!8Mx_<*YcYao*LMs*lbN656u_*w$cF7q4u;YMD=ze>kS&SqJIrhq@*NM^a_ z=S$G12loNo;!&N&++SI+VyyA0Wl_7@TSb6%?Xp5vGvH5eSVk|>L)uKb0C3lY0F-3U zimgD^Gvp7PsL6dcZzX%2nz+41e6WZM;a#0)6B>S?OV0FLhvNmVn!eFETvk)Utgp5V z0W?TT)cT}%9%<*o9K9pPfHRizQ@1x<`7}0W^h8b{y6(@kTOYFs?k#{>N;o6O7Io1!8H5$xg#PgtH#-M z2rp~&O*MHXl+fx|O4hCTl?fjs3#x39y)?VMW@{;F3^aW!1|DUybVD%TI#&b45veGQ zL19&{*{Ob_JTLYj!2zgb^N_plO7hla4s=$6wB*&;rgiddC&X*}4t`6BED=q#?`MSn zq7X@dujQNZm#;OPlb8Jh3qL=3psbkM^2+e!vd`OhUY7&e6m`^Oj5lhs#~Z-iwL793 z+_YZ!vgmjBm&M86NM`hz0KfZd9|`v3JNR6aHbE+n{lT;$a@?P-ik03&zXqQ{y4v(x zNJU4QnOm4wtsESotvQb^3C={=GB!Tg&}qv_6cKeP7`J$MD6nOORNbUgN2rSB%~aKU zly+qK^rlW6LdP~72><~U^-r0X=lW>aE=IN6(kHtg+--V)sm|xBLD6A@dCGS&)Brlt|`t6Us?UB4`t?Z`a`HIfjb`_Gse7z~qIpXh!+Z^70d|yhQmV8WR5B?b5wP>VQF42_tA819T+Rn5} zlAu5r%WZ*h3DP*^`oK{VLnral{JXC^b7I>rXvaZyhs!jJ{)&3@0&%bnjwQn$!y@P{y7htEQr^iQ9L?1WTSRz5^M4c(*Cr-;Pp` zoPPdKeO7fp{PrmWaTj=jYAvWjpS5OLn90kxV?l{%fSB}*P{X2MlPAtG`|f2B_U&IT z7F3k28APu#zfrMguz1r6W~F2Js}YQJ6bj&kUfKu^K(}fJ51+>>GX7eoSsb+M)8F8t z4uCYwf4&&9D6kp-Fm0cfM}NrDp)!9z?zA7|rpDuefLW{=c@M8xD8HF!B6HT_{2_UK zPD;RYC-xH(#R?fh<0f;b?P|7e)~=dtT*7Re8@OL#v+-g~+>9T-0|diIsML1Q`afA$ z@GW&xopoxTUnZ5&8vTIV``GiEz8=0uaq+{gH?fz z;?{!)lYoCZflN>LypOr*T)(!B26KHan-~-+9X9WHf%j^IOO9aZ~G2M_NyRXzCO4-X`XASHxW((J+lNFeUojGGOhx zUIU0&m5?(6?wAs|2@|yts@V!l`VY0ha-GPwtgwD55Ig(K-h-?*OJV$ifyL=36rRs2 z5P|k7VjGjtB95x@pcKN)tK2XFxSV4DSV1gpZZfK>o2HmDi5P{qmyOnrqC=dL1z$*~ zuZ|8Cx~Hrv5ndzxkOQLo&31*y)jeMrE1!#rTNgN~?Ik(Z-{n*~u?YOb^dDbT$9(>2 z`wY}acSGIA_~;`BMgj+C-iPuY^3ZW6b$%6&mhuT@_dR{Gl#~CEj3c}-JpQb7zUx3` zQc$qxTVy=xzWlXF5VvzaJE!;Ko{3KFBvP2?kODh@x-jNLu&lE*ETJpfkX?v-m*I-O zzA+kWt;TYb<-2#Z|5gJxEwgIY4-=+}7ZkWqe{Fx2L3vu+EWynJA`VVdyg%Fd8q0VI zU=TxwlDN1H3$w0M@0N{qMnr5)n#|LuLuO*}hnQ#qH>vNQRFySQzZVf2LPx#|r=y@d zj&5XyKEEl%*uQZCdZO7x=>naF5F3SE_M?G#5P; z#mJZ6z|2Wx4-@6KsqkqO{30fjwnUACFf;RcB+WGmFdFnWGQ$kC@TMND+1AJ4 z z_j1Zd%L+j7QkTGOrUE-nx}Gyt=ED_RLEnG^Qf@Uf!-&P-3wGSHvzvqb1iWUvFMC1)BN zfGr{xROFZDO_U$Aw=htc!FHchQdk9Oka{v}A|W;R)7PDmGJWT}2anDJe{x6z$FJRP zM)045t+@5yib_iG;Eg=_ejFTme07d!~7je67SL2`T+mbm~-?8v2U(M?+ zx1KPdi(cSuAW>M@(~wc&V=1%hF#j-IaO+m^g@yhj%q|6e(p9r zIzE9S%o}>(b~_Y1Vys(ND7kHgl-KxQPL*C=i@!T+)$UA^jFO#Sfx|BFE16OeyVy^b z{0iV#Wy$Wvi<6HZjtg2hAR2m3+GC_AcNhZHLMn{N9UKpx`U zxu7{c;p-_u&VSBdtKT=@Ky#?X8IMj`x83CPo4ws|pLuU3@z?=D-J-xfvZZ*pK@2{H z?XdQs#dF+Y^$>VS&A+?r)k(6X`C)ZCa@_Zv*#{k0?B&VL|JT7f20U^g$Ai)9u7|cC zZWxLuJ-oVuv>%{(5k}R0N>{PhaZPqOoHluyp!Y1Me}}VvFZO<`=keXZCHGSWZ;b*; zHTahY8Mp3}&V?RYL^!RczJDxo#k7P6Od{VTyY9iW6kNCHm~Qjez={I z^?J&CXz?pBr}F~)^D|3{ttlRfwul{xWq+i++ z`yBeW09^j-yv4qENBa-2y+&@gH)Bt=hzH((UaYKEM$&7*+esmg4)p&Vp6^O7@P20C zxFJ!*8-d$l_7qfKuCA=Vx36T-UV9O1git?uAFh>jo1T4TC#7&Uql0s(?ep4|)bLb8 z29yfKp1Xm;dg*n0=u$A426p~HV8sq)r^$l0m8;^QzuF_!3IT@Rm0!zx+FoEibr%nL ztfV@B9k}S6gTdyrZr~2b26AmHns2{|@1xq03Hb{$nf$sRSvPM8Nhs5rXY-8#qT=f> zTfe+3-?5l7^Nq_)%>GgR{boQaUSz=P{Wee9Gg4dGE5h`S*IxzAOk8a@$^3q8K_Pkb zZ;-b2_Wx=D`Tt#}t|Sx8rakj+78eZBNTjcmrvC4@p1A+N--dud-V!s-)@^hoBLrR- PgCZlL_@ex|@%#S)n>z*6 literal 0 HcmV?d00001 diff --git a/deploy-portainer-simple.sh b/deploy-portainer-simple.sh new file mode 100644 index 0000000..86e2b85 --- /dev/null +++ b/deploy-portainer-simple.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +# Script de déploiement simplifié pour Portainer +# Gère tout automatiquement sans configuration manuelle + +echo "🚀 Déploiement RegisFlow pour Portainer (Automatique)" +echo "====================================================" + +# Créer un répertoire de déploiement temporaire +DEPLOY_DIR="/tmp/regisflow-deploy" +CURRENT_DIR=$(pwd) + +echo "📁 Préparation du déploiement..." + +# Nettoyer le répertoire de déploiement s'il existe +rm -rf "$DEPLOY_DIR" +mkdir -p "$DEPLOY_DIR" + +# Copier tous les fichiers nécessaires +echo "📋 Copie des fichiers..." +cp -r . "$DEPLOY_DIR/" +cd "$DEPLOY_DIR" + +# Utiliser le Docker Compose spécifique à Portainer +mv docker-compose-portainer.yml docker-compose.yml + +echo "🔧 Construction et démarrage..." + +# Arrêter les conteneurs existants +docker-compose down 2>/dev/null || true + +# Construire et démarrer +docker-compose up -d --build + +if [ $? -eq 0 ]; then + echo "✅ Déploiement réussi!" + echo "" + echo "📊 État des conteneurs:" + docker-compose ps + echo "" + echo "🔗 Application accessible sur: http://localhost:5000" + echo "🔐 Connexion par défaut: admin/admin123" + echo "🗄️ PostgreSQL accessible sur le port: 5433" + echo "" + echo "📋 Commandes utiles:" + echo " - Voir les logs: docker-compose logs -f" + echo " - Arrêter: docker-compose down" + echo " - Redémarrer: docker-compose restart" + echo "" + echo "📁 Fichiers de déploiement dans: $DEPLOY_DIR" +else + echo "❌ Échec du déploiement" + echo "📋 Vérifiez les logs avec: docker-compose logs" + exit 1 +fi + +# Retourner au répertoire original +cd "$CURRENT_DIR" \ No newline at end of file diff --git a/docker-compose-portainer.yml b/docker-compose-portainer.yml new file mode 100644 index 0000000..f60d689 --- /dev/null +++ b/docker-compose-portainer.yml @@ -0,0 +1,77 @@ +version: '3.8' + +# Docker Compose pour Portainer - Construction automatique +# Ce fichier gère tout automatiquement sans configuration supplémentaire +services: + # Base de données PostgreSQL + regisflow-db: + image: postgres:15-alpine + container_name: regisflow-db + environment: + POSTGRES_DB: regisflow + POSTGRES_USER: regisflow + POSTGRES_PASSWORD: RegisFlow2024!PostgreSQL + volumes: + - regisflow_postgres_data:/var/lib/postgresql/data + ports: + - "5433:5432" + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "pg_isready -U regisflow -d regisflow"] + interval: 30s + timeout: 10s + retries: 5 + start_period: 30s + networks: + - regisflow_network + + # Application RegisFlow - Construction depuis le répertoire courant + regisflow-app: + build: + context: . + dockerfile: Dockerfile + target: production + image: regisflow-app:latest + container_name: regisflow-app + depends_on: + regisflow-db: + condition: service_healthy + environment: + NODE_ENV: production + PORT: 5000 + DATABASE_URL: postgresql://regisflow:RegisFlow2024!PostgreSQL@regisflow-db:5432/regisflow + SESSION_SECRET: RegisFlow2024SessionSecretKey1234567890ABCDEF + TZ: Europe/Paris + SECURE_COOKIES: false + DATA_RETENTION_MONTHS: 19 + BACKUP_RETENTION_DAYS: 90 + MAX_BACKUP_COUNT: 20 + volumes: + - regisflow_backup_data:/app/backups + - regisflow_logs_data:/app/logs + ports: + - "5000:5000" + restart: unless-stopped + healthcheck: + test: ["CMD-SHELL", "wget --no-verbose --tries=1 --spider http://localhost:5000/health || exit 1"] + interval: 30s + timeout: 15s + retries: 3 + start_period: 90s + networks: + - regisflow_network + +# Volumes avec noms uniques pour éviter les conflits +volumes: + regisflow_postgres_data: + driver: local + regisflow_backup_data: + driver: local + regisflow_logs_data: + driver: local + +# Réseau dédié avec nom unique +networks: + regisflow_network: + driver: bridge + name: regisflow_net \ No newline at end of file