studentenportal / deploy

:ship: The studentenportal.ch deployment
https://studentenportal.ch
0 stars 0 forks source link

Continuous Deployment #10

Closed The-Compiler closed 3 years ago

The-Compiler commented 4 years ago

https://www.portainer.io/

Ist aber für mich momentan out of scope, weil nie genauer abgesprochen

dbrgn commented 4 years ago

Ist das einfach ein WebUI für Docker? Oder macht das noch mehr?

fabianhauser commented 4 years ago

Ist das einfach ein WebUI für Docker? Oder macht das noch mehr?

Grundsätzlich ja, man könnte damit aber auch via Webhook container aktualisieren (fürs Continuous Deployment.)

The-Compiler commented 4 years ago

Aus deploy-new/production.j2.yaml:

# Portainer - Admin console for docker
  portainer:
    image: portainer/portainer

    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"

    ports:
      - "9000:9000/tcp"

    mode: replicated
    replicas: 0

    resources:
      limits:
        cpus: "0.1"
        memory: "500M"
      reservations:
        cpus: "0.075"
        memory: "250M"
dbrgn commented 4 years ago

Grundsätzlich ja, man könnte damit aber auch via Webhook container aktualisieren (fürs Continuous Deployment.)

Dafür ist https://github.com/containrrr/watchtower auch recht cool. (Nein, das Tool kommt nicht von den Zeugen Jehova :smile:)

dbrgn commented 3 years ago

Habe jetzt Watchtower mal eingerichtet, mit 1 Minute Refresh-Interval: aa57fb337ee4f8f222a023a986b59d1fd6f50551

Musste dafür noch eine Änderung im docker-compose File machen:

https://github.com/studentenportal/web/pull/259

Scheint zu klappen:

time="2020-07-29T21:34:32Z" level=info msg="Found new studentenportal/web:latest image (sha256:0019d849ba93c808efbb5de00596843724b200c63aebc56e7ba54445641e14e3)"
time="2020-07-29T21:34:34Z" level=info msg="Stopping /web_studentenportal_1 (d6bd1e24075db7535dfc8102e2432d9ab38994cd35d350488ba60482defc0e81) with SIGTERM"
time="2020-07-29T21:34:45Z" level=info msg="Creating /web_studentenportal_1"
time="2020-07-29T21:34:46Z" level=info msg="Removing image sha256:558d6db1ce37934c3b04966b5d8e240d7f3ab8414f3db9ac63bcc69372b4892f"

:tada:

Watchtower kann über docker logs -f watchtower monitored werden.

Der Nginx-Container wird momentan noch nicht updated, da wir davon keine Images builden / publizieren. Sollte man wohl in einem nächsten Schritt noch tun.

Aber für den Moment gilt: Nach einem Push auf den master-Branch wird nach der Publikation des Docker-Images innerhalb einer Minute der Web-Container re-deployed.

@fabianhauser @The-Compiler können wir dieses Issue schliessen?

dbrgn commented 3 years ago

(Watchtower könnte man übrigens auch per HTTP triggern. Aber ich denke Polling ist schöner, da komplett entkoppelt.)

The-Compiler commented 3 years ago

Sehr cool, ich hab mir das irgendwie deutlich komplizierter vorgestellt! Ja, ich denke wir können das Issue zumachen. Eine Minute delay ist wohl kein Problem und das Ansible auto-deployment brauchts IMHO nicht unbedingt (Änderungen wirds wohl eher an der Codebase selbst geben).