From 1a5309d51c82167a8ad15c38f6a5dad0ee8943ef Mon Sep 17 00:00:00 2001 From: toukay <35756997+toukay@users.noreply.github.com> Date: Mon, 19 Aug 2024 10:26:46 +0200 Subject: [PATCH] Setup docker and docker compose for both services. --- docker-compose.yaml | 31 +++++++++++++++++++++++++++++++ src/product_api/Dockerfile | 21 +++++++++++++++++++++ src/product_api/eshop.db | Bin 28672 -> 0 bytes src/product_api/src/eshop.db | Bin 28672 -> 28672 bytes src/web/Dockerfile | 15 +++++++++++++++ 5 files changed, 67 insertions(+) create mode 100644 docker-compose.yaml create mode 100644 src/product_api/Dockerfile delete mode 100644 src/product_api/eshop.db create mode 100644 src/web/Dockerfile diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 0000000..ad95650 --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,31 @@ +services: + product-api: + build: + context: ./src/product_api + dockerfile: Dockerfile + container_name: product-api + volumes: + - ./src/product_api:/usr/src/app + - ./src/product_api/src/eshop.db:/usr/src/app/src/eshop.db + ports: + - "8000:8000" + environment: + - DEBUG=True + command: uvicorn src.app:app --host 0.0.0.0 --port 8000 --reload + + web: + build: + context: ./src/web + dockerfile: Dockerfile + container_name: angular-web + volumes: + - ./src/web:/usr/src/app + - /usr/src/app/node_modules + ports: + - "4200:4200" + depends_on: + - product-api + command: ng serve --host 0.0.0.0 --port 4200 + +volumes: + sqlite_data: \ No newline at end of file diff --git a/src/product_api/Dockerfile b/src/product_api/Dockerfile new file mode 100644 index 0000000..6c54caa --- /dev/null +++ b/src/product_api/Dockerfile @@ -0,0 +1,21 @@ +FROM python:3.12.4-alpine + +ENV PYTHONDONTWRITEBYTECODE=1 +ENV PYTHONUNBUFFERED=1 + +WORKDIR /usr/src/app + +RUN apk update && \ + apk add --no-cache --virtual .build-deps \ + gcc python3-dev musl-dev ca-certificates libffi-dev + +COPY requirements.txt ./ + +RUN pip install --upgrade pip +RUN pip install --no-cache-dir -r requirements.txt + +COPY . . + +EXPOSE 8000 + +CMD ["uvicorn", "src.app:app", "--host", "0.0.0.0", "--port", "8000"] \ No newline at end of file diff --git a/src/product_api/eshop.db b/src/product_api/eshop.db deleted file mode 100644 index 6fb910e18e68ca67d218c485769998504472c704..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28672 zcmeI4U5MP)6@aCY=123hHxP#*IBsq*rn}&s-SzGor(iO(vlEZAv+MQD+Ky?$qLJ>- zsH>6WE6x5Sl&}eYD%4NyL!a_c=u0uBO@bdn6Pyrep??$-@(_ZdFU9nsg@mRLZIABE zY&Dx1XiEqNAHnL3?$y<~=R4;vI=Z@QT&`IGqgyWT=mDLV9+6~ODpD#*QUd;x@Hg1v z@IxIOfRrP@$Nfx5g`Mx^a>t}Z<_(G5BB_b*=bp&Ck^SSi23U>+kN^@u0!RP}AOR$R z1dzZmfmff1C-c+O@@w0H-n5y=U9)Qhn}!~+mdp2#9w*B6N@=4)H%d#j3O!m&C)3)X z%rfc4wT;S!N}aA<+MsJ!YPHietqm@`Ii`NSesQ%_zfM;w*XiVcu63G58cu~5diGMi za`D1icw*$dDO#^QTd7yp%9X~Tdvww=ztkjpxoDd~xoDK0dM1&`H>PFDa!j`8->@OS z+0?s%D~>k@{TnpeoI6?)<~*s8_^Ym(%pX54-&~Ax?w=kXMKy#u29l$97`3>IQ$t>{I(mz3cDWsG)#SQkj`P#N&|u$V z`P6bv~{6pnP+5tT!&qIG@O?J3Fpi4*ccSpXlnXdu-gp^*#|ErMllh0u8{{zhZAJTwA zvylK2Kmter2_OL^fCP{L5o7me|Fh}WB=SS@$i$B(rgFc?ozK3Vt!93o zvC^MI1#UnG|lGUG57tmSb?H`%owpQIB!)!7MnhP`vue zSe@*prTOPNrBG*rrBl*3za3h6I9o>>ET}Wj)(zHSP7tnr?@iD8y_ z=4(1{vA*l34_#-{HnXkX^dsH1f;RQsT_D=Ed&~>P7stD?RCAh*?FE7Km82%kAIKro z{tM2u-t_~R_@oPa3nkhHGp2oyfl0maiT1(JIc;_=I}o<(woPF+lpk;NMx?L#V{Ph0KZ``SmQriixvE}d7gpY$bL=tG#G3lvdx)#bjGr^PT~Mh|e4wJgVhv0Nywj*qBivwn8Tt%v&Jfii&G zdy$=17iZ@hrKm2Q&dr{i^`clWtT({fV3|YPE_`vJZ)TxrzjOQ8OZTdytTg9!X0L9C zTGaz3rb$x=k42oi#G0;0&(y*}vCG8Jh~R~=wZXU1KAc&k9n0wk%%|?w@Mt=i`LA5u zmchkr;Nn$%$1*7Rw?yGT8I0FJM9|@=iS!2Itmo`P@zyhARYlwy=KneJQ;B>*{zmST zKfxM+56SPyugUx5m*fulIaJ|>1dsp{Kmter2_OL^fCP{L5&$3guG7vKz;?^0{lXJ6X4^o(Lhv%1dsp{Kmter2_OL^fCP{L5C}|;L@GL;nsXqyPW_ diff --git a/src/product_api/src/eshop.db b/src/product_api/src/eshop.db index a9a12892ef45b9b9ec768c547dbeae09d2437ed8..6fb910e18e68ca67d218c485769998504472c704 100644 GIT binary patch literal 28672 zcmeI4U5MP)6@aCY=123hHxP#*IBsq*rn}&s-SzGor(iO(vlEZAv+MQD+Ky?$qLJ>- zsH>6WE6x5Sl&}eYD%4NyL!a_c=u0uBO@bdn6Pyrep??$-@(_ZdFU9nsg@mRLZIABE zY&Dx1XiEqNAHnL3?$y<~=R4;vI=Z@QT&`IGqgyWT=mDLV9+6~ODpD#*QUd;x@Hg1v z@IxIOfRrP@$Nfx5g`Mx^a>t}Z<_(G5BB_b*=bp&Ck^SSi23U>+kN^@u0!RP}AOR$R z1dzZmfmff1C-c+O@@w0H-n5y=U9)Qhn}!~+mdp2#9w*B6N@=4)H%d#j3O!m&C)3)X z%rfc4wT;S!N}aA<+MsJ!YPHietqm@`Ii`NSesQ%_zfM;w*XiVcu63G58cu~5diGMi za`D1icw*$dDO#^QTd7yp%9X~Tdvww=ztkjpxoDd~xoDK0dM1&`H>PFDa!j`8->@OS z+0?s%D~>k@{TnpeoI6?)<~*s8_^Ym(%pX54-&~Ax?w=kXMKy#u29l$97`3>IQ$t>{I(mz3cDWsG)#SQkj`P#N&|u$V z`P6bv~{6pnP+5tT!&qIG@O?J3Fpi4*ccSpXlnXdu-gp^*#|ErMllh0u8{{zhZAJTwA zvylK2Kmter2_OL^fCP{L5o7me|Fh}WB=SS@$i$B(rgFc?ozK3Vt!93o zvC^MI1#UnG|lGUG57tmSb?H`%owpQIB!)!7MnhP`vue zSe@*prTOPNrBG*rrBl*3za3h6I9o>>ET}Wj)(zHSP7tnr?@iD8y_ z=4(1{vA*l34_#-{HnXkX^dsH1f;RQsT_D=Ed&~>P7stD?RCAh*?FE7Km82%kAIKro z{tM2u-t_~R_@oPa3nkhHGp2oyfl0maiT1(JIc;_=I}o<(woPF+lpk;NMx?L#V{Ph0KZ``SmQriixvE}d7gpY$bL=tG#G3lvdx)#bjGr^PT~Mh|e4wJgVhv0Nywj*qBivwn8Tt%v&Jfii&G zdy$=17iZ@hrKm2Q&dr{i^`clWtT({fV3|YPE_`vJZ)TxrzjOQ8OZTdytTg9!X0L9C zTGaz3rb$x=k42oi#G0;0&(y*}vCG8Jh~R~=wZXU1KAc&k9n0wk%%|?w@Mt=i`LA5u zmchkr;Nn$%$1*7Rw?yGT8I0FJM9|@=iS!2Itmo`P@zyhARYlwy=KneJQ;B>*{zmST zKfxM+56SPyugUx5m*fulIaJ|>1dsp{Kmter2_OL^fCP{L5&$3guG7vKz;?^0{lXJ6X4^o(Lhv%1dsp{Kmter2_OL^fCP{L5C}|;L@GL;nsXqyPW_ delta 109 zcmZp8z}WDBae_1>>qHr6R#pbRaIcLi3;3BB1U3sAEajg#A(V}m0SL(Ca-rx20O&{> Aa{vGU diff --git a/src/web/Dockerfile b/src/web/Dockerfile new file mode 100644 index 0000000..ac6b04c --- /dev/null +++ b/src/web/Dockerfile @@ -0,0 +1,15 @@ +FROM node:18-alpine + +WORKDIR /usr/src/app + +COPY package*.json ./ + +RUN npm install + +RUN npm install -g @angular/cli + +COPY . . + +EXPOSE 4200 + +CMD ["ng", "serve", "--host", "0.0.0.0"]