Преглед изворни кода

Preparado para alpine y reducción de tamaño de imagen

Celestino Rey пре 7 месеци
родитељ
комит
f0f4a596e7
6 измењених фајлова са 118 додато и 30 уклоњено
  1. 25 20
      Dockerfile
  2. 37 0
      Dockerfile.debian
  3. 40 0
      Dockerfile.singlebuild
  4. 15 9
      K8S/Makefile
  5. 1 1
      K8S/finanzas-deployment.yaml
  6. 0 0
      src/config/entrypoint.sh

+ 25 - 20
Dockerfile

@@ -1,21 +1,30 @@
 # yup, python 3.11!
-FROM python:3.11-slim
+FROM python:3.11-alpine as builder
 
 # install nginx y otras cosas
-RUN apt-get update && apt-get install nginx netcat-openbsd curl vim jq rsync libpango-1.0-0 libpangocairo-1.0-0 libcairo2 postgresql-client -y
+RUN apk add nginx netcat-openbsd curl vim jq rsync pango pango-dev cairo postgresql-client bash glib fontconfig font-noto
+
+COPY ./nginx/default.conf /etc/nginx/nginx.conf
+COPY ./src/requirements.txt requirements.txt
+RUN pip install --user --no-cache-dir -r requirements.txt
 
-# copy our nginx configuration to overwrite nginx defaults
-RUN rm /etc/nginx/sites-enabled/default
-RUN rm /etc/nginx/sites-available/default
-COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
 # link nginx logs to container stdout
-RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
+RUN ln -sf /dev/stdout /var/log/nginx/access.log && \
+    ln -sf /dev/stderr /var/log/nginx/error.log && \
+    chgrp -R 0 /var/lib/nginx && \
+    chmod -R g=u /var/lib/nginx
+
+FROM python:3.11-alpine as main
+
+COPY --from=builder /root/.local /root/.local
+
+ENV PATH="/root/.local/bin:$PATH"
 
 # copy the django code
 COPY ./src ./app
 
-RUN chgrp -R 0 ./app && chmod -R g=u ./app
-RUN chgrp -R 0 /var/lib/nginx && chmod -R g=u /var/lib/nginx
+RUN chgrp -R 0 ./app && \
+    chmod -R g=u ./app
 
 # change our working directory to the django projcet roo
 WORKDIR /app
@@ -23,18 +32,14 @@ WORKDIR /app
 # create virtual env (notice the location?)
 # update pip
 # install requirements
-RUN python -m venv /opt/venv && \
-    /opt/venv/bin/python -m pip install pip --upgrade && \
-    /opt/venv/bin/python -m pip install -r requirements.txt
-
-# Añade path a .bashrc
-
-RUN echo "export PATH=/opt/venv/bin/:$PATH" >> /root/.bashrc
-
-# make our entrypoint.sh executable
-RUN chmod +x config/entrypoint.sh
+#RUN python -m venv /opt/venv && \
+    #/opt/venv/bin/python -m pip install pip --upgrade && \
+    #/opt/venv/bin/python -m pip install -r requirements.txt && \
+    #echo "export PATH=/opt/venv/bin/:$PATH" >> /root/.bashrc && \
+    #chmod +x config/entrypoint.sh
 
 #EXPOSE 8080
 
 # execute our entrypoint.sh file
-CMD ["./config/entrypoint.sh"]
+# CMD ["./config/entrypoint.sh"]
+CMD ["gunicorn", "misfinanzas.wsgi:application", "--bind", "0.0.0.0:8000", "--access-logfile", "-",  "--error-logfile",  "-", "--log-level", "info"]

+ 37 - 0
Dockerfile.debian

@@ -0,0 +1,37 @@
+# yup, python 3.11!
+FROM python:3.11-slim
+
+# copy the django code
+COPY ./src ./app
+
+# install nginx y otras cosas
+RUN apt-get update -y && \
+    apt-get install nginx netcat-openbsd curl vim jq rsync libpango-1.0-0 libpangocairo-1.0-0 libcairo2 postgresql-client -y && \
+    rm /etc/nginx/sites-enabled/default && \
+    rm /etc/nginx/sites-available/default
+
+COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
+# link nginx logs to container stdout
+RUN ln -sf /dev/stdout /var/log/nginx/access.log && \
+    ln -sf /dev/stderr /var/log/nginx/error.log && \
+    chgrp -R 0 ./app && \
+    chmod -R g=u ./app && \
+    chgrp -R 0 /var/lib/nginx && \
+    chmod -R g=u /var/lib/nginx
+
+# change our working directory to the django projcet roo
+WORKDIR /app
+
+# create virtual env (notice the location?)
+# update pip
+# install requirements
+RUN python -m venv /opt/venv && \
+    /opt/venv/bin/python -m pip install pip --upgrade && \
+    /opt/venv/bin/python -m pip install -r requirements.txt && \
+    echo "export PATH=/opt/venv/bin/:$PATH" >> /root/.bashrc && \
+    chmod +x config/entrypoint.sh
+
+#EXPOSE 8080
+
+# execute our entrypoint.sh file
+CMD ["./config/entrypoint.sh"]

+ 40 - 0
Dockerfile.singlebuild

@@ -0,0 +1,40 @@
+# yup, python 3.11!
+FROM python:3.11-slim
+
+# install nginx y otras cosas
+RUN apt-get update && apt-get install nginx netcat-openbsd curl vim jq rsync libpango-1.0-0 libpangocairo-1.0-0 libcairo2 postgresql-client -y
+
+# copy our nginx configuration to overwrite nginx defaults
+RUN rm /etc/nginx/sites-enabled/default
+RUN rm /etc/nginx/sites-available/default
+COPY ./nginx/default.conf /etc/nginx/conf.d/default.conf
+# link nginx logs to container stdout
+RUN ln -sf /dev/stdout /var/log/nginx/access.log && ln -sf /dev/stderr /var/log/nginx/error.log
+
+# copy the django code
+COPY ./src ./app
+
+RUN chgrp -R 0 ./app && chmod -R g=u ./app
+RUN chgrp -R 0 /var/lib/nginx && chmod -R g=u /var/lib/nginx
+
+# change our working directory to the django projcet roo
+WORKDIR /app
+
+# create virtual env (notice the location?)
+# update pip
+# install requirements
+RUN python -m venv /opt/venv && \
+    /opt/venv/bin/python -m pip install pip --upgrade && \
+    /opt/venv/bin/python -m pip install -r requirements.txt
+
+# Añade path a .bashrc
+
+RUN echo "export PATH=/opt/venv/bin/:$PATH" >> /root/.bashrc
+
+# make our entrypoint.sh executable
+RUN chmod +x config/entrypoint.sh
+
+#EXPOSE 8080
+
+# execute our entrypoint.sh file
+CMD ["./config/entrypoint.sh"]

+ 15 - 9
K8S/Makefile

@@ -1,6 +1,7 @@
 export REGISTRY=registry.reymota.es
-export IMG_VERSION = 0.117
-export NAMESPACE = finanzas
+export IMG_VERSION = alpine-4
+export PUERTO = 30347
+export NAMESPACE = fdev
 
 # limpia todo
 all: imagen clean install
@@ -9,7 +10,7 @@ imagen:
 	cd ../; make
 
 ns:
-	-kubectl create -f namespace.yaml
+	-cat namespace.yaml | sed -e "s/<NS>/${NAMESPACE}/" |kubectl create -f -
 
 install:
 	-cat reg-secret.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
@@ -19,7 +20,7 @@ install:
 	-cat db-deployment.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
 	-cat db-service.yaml| sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
 
-	-cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${IMG_VERSION}/" | kubectl create -f -
+	-cat finanzas-deployment.yaml | sed -e "s/<PUERTO>/${PUERTO}/" |sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${IMG_VERSION}/" | kubectl create -f -
 	-cat finanzas-ingress.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
 
 clean:
@@ -37,11 +38,16 @@ clean:
 nginx:
 	cd ../nginx; make
 
+borraclaims:
+	-cat pvc-finanzas.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
+	-cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
+	-cat pvc-postgresql.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl delete -f -
+
 claims:
-	-kubectl create -f pvc-finanzas.yaml
-	-kubectl create -f pvc-static.yaml
-	-kubectl create -f pvc-postgresql.yaml
+	-cat pvc-finanzas.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
+	-cat pvc-static.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
+	-cat pvc-postgresql.yaml | sed -e "s/<NS>/${NAMESPACE}/" | kubectl create -f -
 
 app:
-	-cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${IMG_VERSION}/" | kubectl delete -f -
-	-cat finanzas-deployment.yaml | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${IMG_VERSION}/" | kubectl create -f -
+	-cat finanzas-deployment.yaml | sed -e "s/<PUERTO>/${PUERTO}/" | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${IMG_VERSION}/" | kubectl delete -f -
+	-cat finanzas-deployment.yaml | sed -e "s/<PUERTO>/${PUERTO}/" | sed -e "s/<NS>/${NAMESPACE}/" | sed -e "s/<TAG>/${IMG_VERSION}/" | kubectl create -f -

+ 1 - 1
K8S/finanzas-deployment.yaml

@@ -8,7 +8,7 @@ spec:
   ports:
     - name: "8080"
       port: 8080
-      nodePort: 30346
+      nodePort: <PUERTO>
       targetPort: 8080
   selector:
     app: finanzas

+ 0 - 0
src/config/entrypoint.sh