Slide 1

Slide 1 text

WordPress Development With Git & Docker By Theodoros Dimitriou

Slide 2

Slide 2 text

Σκοπός του WorkShop 1. Να διδάξει τις βασικές εντολές για χρήση τερματικού CMD 2. Να διδάξει την δημιουργία κλειδιών SSH 3. Να διδάξει τις βασικές λειτουργίες του Git 4. Να διδάξει τις βασικές λειτουργίες του Docker 5. Να παρουσιάσει τα αρχεία ρυθμίσεων .yml & .yaml configuration files 6. Να διδάξει πως γίνεται μια τοπική εγκατάσταση ενός ολοκληρωμένου συστήματος WordPress & WooCommerce χρησιμοποιώντας containers.

Slide 3

Slide 3 text

Απαιτούμενα για συμμετοχή Το WorkShop απευθύνεται σε Web Developers που χρησιμοποιούν υπολογιστή, κυρίως με τα λειτουργικά συστήματα Linux Ubuntu & Linux Debian & Linux Mint & macOS, καθότι αυτά έχουν native support για γραμμή εντολών. Για τους χρήστες macOS, καλό θα είναι να έχουν εγκατεστημένο τον Brew package manager. Για τους χρήστες συστημάτων Windows, θα χρειαστεί να έχετε εγκατεστημένες τις παρακάτω εφαρμογές ● Git Bash Terminal for Windows ● Docker Desktop Το Git & Docker λειτουργούν σε όλα τα δημοφιλή Λειτουργικά Συστήματα.

Slide 4

Slide 4 text

Απαιτούμενα για συμμετοχή #2 Σύστημα Linux, macOS, Windows Γραμμή εντολών CMD Έναν Text editor, όπως Notepad++, Visual Studio, Atom, κλπ ● Windows: Docker Desktop 2.0+ on Windows 10 Pro/Enterprise. Windows 10 Home (2004+) requires Docker Desktop 2.3+ and the WSL 2 back-end. (Docker Toolbox is not supported. Windows container images are not supported.) ● macOS: Docker Desktop 2.0+. ● Linux: Docker CE/EE 18.06+ and Docker Compose 1.21+. (The Ubuntu snap package is not supported.)

Slide 5

Slide 5 text

pwd Εντολή για δείτε σε πιο φάκελο και διαδρομή βρίσκεστε ls -all or ls -a or ll --all or ll -a Εντολή για δείτε τα περιεχόμενα του φακέλου που βρίσκεστε σε λίστα μαζι με διάφορες ιδιότητες τους mv “/file.type /file2.type” Εντολή με πολλαπλές χρήσεις, είτε για μετονομασία του αρχείου file.type σε file2.type, είτε για μετακίνηση ολόκληρων φακέλων και αρχείων σε διαφορετικές διαδρομές αρχείων rm -rf “file.type” Εντολή για την διαγραφή του αρχείου file.type tail “file.type” Εντολή για την προβολή των τελευταίων 5 γραμμών από το αρχείο file.type Βασικές εντολές γραμμής εντολών CMD

Slide 6

Slide 6 text

Βασικές εντολές γραμμής εντολών CMD #2 cd “path/” Εντολή για μετακίνηση εντός κάποιου φακέλου όπως ορίζει η διαδρομή cd .. Εντολή για να γυρίσετε πίσω στον προηγούμενο, γονικό φάκελο cat “file.txt” Εντολή για προβολή των περιεχομένων ενός αρχείου mkdir “wordpress-install-01” Εντολή για την δημιουργία καινούργιου φακέλου με τίτλο “wordpress-install-01” touch “filename.type” Εντολή για την δημιουργία καινούργιου αρχείου με όνομα και κατάληξη filename.type

Slide 7

Slide 7 text

Εισαγωγή στα SSH κλειδιά Ένα κλειδί SSH, είναι ένα μέσο πρόσβασης διαμέσω του SSH protocol. SSH σημαίνει Secure Shell, και δημιουργήθηκαν το 1995 για να βελτιώσουν την ασφάλεια απομακρυσμένων συνδέσεων. Κάθε SSH κλειδί, χωρίζεται σε 2 μέρη. Στο Δημόσιο (Public) και Προσωπικό (Private) κλειδί. Προσοχή: Μόνο το Δημόσιο κλειδί δίνετε σε οποιαδήποτε υπηρεσία για να συνδέεστε.

Slide 8

Slide 8 text

Δημιουργία SSH κλειδιών

Slide 9

Slide 9 text

Εισαγωγή στο Git Performance / Security / Flexibility / version Control Έλεγχος και καταγραφή κάθε αλλαγής στον πηγαίο κώδικα

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Git Επεξήγηση βασικών όρων master branch Η έκδοση που είναι Production Ready & Live child branch Branches “διακλαδώσεις” στις οποίες εργαζόμαστε clone Αντιγραφή απομακρυσμένου αποθετηρίου τοπικά pull και push “Τραβήξτε” ή “προωθήστε” τα τελευταία commits commit Ολοκληρωμένο ύπο-κομμάτι εργασίας merge Συνένωση 2 branches, συνήθως με το master branch fetch Ενημέρωση του τοπικού σας repo από το remote master branch remote master branch Το “κεντρικό” αποθετήριο όπου βρίσκεται ο κώδικας

Slide 12

Slide 12 text

Βασικές εντολές χρήσης Git git clone git branch git checkout git status git add git commit git push git pull git merge

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

Εισαγωγή στο Docker Ένα Docker Container, είναι με λίγα λόγια ένα virtual machine in a file. Και αυτό το αρχείο, είναι ένα docker-image, που γίνεται Container όταν τρέχει στο Docker Engine. Με μικρές και ευέλικτες απαιτήσεις σε μνήμη και πόρους. Με υψηλές προδιαγραφές για την ασφάλεια και προστασία δεδομένων.

Slide 15

Slide 15 text

Πλεονεκτήματα εργασίας με Docker ● Απομονωμένα Dependencies. ○ Μπορείτε να εκτελέσετε ταυτόχρονα διαφορετικές εκδόσεις του ίδιου λογισμικού. Για παράδειγμα MySQL 5.7, και MySQL 8.0, ή μια εγκατάσταση WP 5.1, και μια 5.6, και μια 5.7, χωρίς να υπάρχει πρόβλημα στην διαχείριση ξεχωριστών version dependencies. ○ Έχετε τον πλήρη έλεγχο για το ποια έκδοση θα εγκατασταθεί για την κάθε βιλιοθήκη ή πρόσθετο. ● Η εργασία σας, είναι portable. ○ Ένας άλλος προγραμματιστής, μπορεί να εγκαταστήσει τοπικά στον υπολογιστή του, ότι έχετε φτιάξει τοπικά στον δικό σας υπολογιστή και να λειτουργήσει ακριβώς το ίδιο. ● Εργασία και πειραματισμός χωρίς ρίσκο. ○ Πειραματιστείτε ελεύθερα σε δοκιμαστικά containers χωρίς να βάζετε σε ρίσκο τα Production websites.

Slide 16

Slide 16 text

Docker Containers State Τα Docker Containers, είναι Stateless, που σημαίνει ότι κάθε φορά που ενεργοποιείται ένα Container, τότε αυτό φορτώνει μόνο ότι δηλώνετε στα .yml config files. Συνδέοντας ένα Volume το οποίο πρακτικά είναι μια αντιστοίχιση ενός φακέλου τοπικά στο σύστημα σας, με ένα εικονικό δίσκο στο Container, τότε μπορείτε να αποθηκεύετε τις αλλαγές σας και να μην χάνονται με κάθε reboot.

Slide 17

Slide 17 text

Λίγα λόγια για τα Docker Volumes

Slide 18

Slide 18 text

Docker Networks Επειδή το Host OS, μπορεί να αλλάζει τα Ports και τις IP addresses, κάθε φορά που επανεκκινούμε ένα Container, φτιάχνουμε εικονικά δίκτυα όπου ορίζουμε τα Containers και το καθένα έχει την δικιά του ΙΡ.

Slide 19

Slide 19 text

Docker Compose Το Docker Compose, είναι ένα εργαλείο που μας βοηθάει να ενορχηστρώσουμε και διαχειριστούμε εύκολα πολλαπλά Containers και ολα τα Dependencies τους. Μια τυπική εγκατάσταση συνήθως έχει 3 με 4 containers. ● Frontend ● Backend ● Database ● Cache

Slide 20

Slide 20 text

Docker Configuration Files - .yaml & .yml Για πολλούς λόγους, ασφάλειας κυρίως, χρησιμοποιούμε διαφορετικές ρυθμίσεις (.yml configuration files) ανάμεσα στα περιβάλλοντα development, staging, production. Κάθε ξεχωριστό config αρχείο, μπορεί να έχει διαφορετικά endpoints, secret tokens, API keys, SSH keys, για κάθε περιβάλλον. Dev, staging, production. Για τις ανάγκες του WorkShop, θα χρησιμοποιήσουμε ένα έτοιμο config αρχείο για κάθε μας πείραμα το οποίο σας παρέχετε έτοιμο και μπορείτε να το αντιγράψετε ελεύθερα. Υπάρχουν πολλοί τρόποι να ρυθμίσετε τις παραμέτρους των containers που εργάζεστε και αυτό εξαρτάται από τις εταιρικές και προσωπικές σας προτιμήσεις.

Slide 21

Slide 21 text

Εγκατάσταση Docker Desktop & Docker Compose $ sudo apt-get update $ sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg \ lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg Οι παρακάτω εντολές είναι για τους χρήστες Linux Ubuntu & macOS και όλα τα βήματα εξηγούνται αναλυτικά στο Documentation του Docker https://docs.docker.com/engine/install/ubuntu/ A B sudo apt-get install docker-ce docker-ce-cli containerd.io Γ Εγκατάσταση Docker & Docker Engine

Slide 22

Slide 22 text

Το 1ο πείραμα

Slide 23

Slide 23 text

Απαιτούμενα Δοκιμαστική εγκατάσταση ● Git ● Docker ● 1 Empty Directory ● 1 .yml config αρχείο ● Internet connection

Slide 24

Slide 24 text

Έναρξη εγκατάστασης 1. Δημιουργία ενός νέου φακέλου (mkdir wp-workshop, είτε με δεξί κλικ στα windows) 2. Δημιουργία ή κλωνοποίηση ενός έτοιμου Git repository 3. Δημιουργία docker-compose.yml αρχείου 4. Άνοιγμα του docker-compose.yml με τον text editor και προσθήκη κώδικα Αντιγράψτε από εδώ: https://github.com/operator888/yaml-configurations

Slide 25

Slide 25 text

Διαδικασία εγκατάστασης Με το συγκεκριμένο Docker config αρχείο δημιουργούμε: 1. Μια βάση δεδομένων mySQL 5.7 2. Όνομα χρήστη 3. Κωδικό 4. Όνομα βάσης δεδομένων 5. Κωδικός βάσης δεδομένων 6. WordPress εγκατάσταση 7. Στοιχεία Administrator 8. Volume για Data Persistency Αντιγράψτε από εδώ: https://github.com/operator888/yaml-configurations

Slide 26

Slide 26 text

Ανάλυση εγκατάστασης & εντολών #2 Docker-compose up -d Εκκινεί το/τα εκάστοτε containers και κρύβει το ΙΟ τερματικό, επιτρέποντας σας να συνεχίσετε να χρησιμοποιείτε το ίδιο terminal παράθυρο. Docker-compose up Εκκινεί το/τα εκάστοτε containers και δεσμεύει το terminal με την προβολή όλων των HTTP requests από και προς τα Containers.

Slide 27

Slide 27 text

Ανάλυση εγκατάστασης & εντολών #3 Ανοίγουμε μια νέα καρτέλα στον Browser και δίνουμε την τοπική μας διεύθυνση και την πόρτα επικοινωνίας IP:Port or URL:Port 192.168.0.1:80 localhost:80

Slide 28

Slide 28 text

Docker & WordPress Εφόσον ολοκληρώθηκαν επιτυχώς τα προηγούμενα βήματα, τότε γράφουμε την παρακάτω εντολή για να ξεκινήει η δημιουργια του WordPress Docker Container. $docker-compose up -d Και μετά δώστε την εντολή $docker ps Για να δείτε λεπτομέρειες για τα Container που είναι ενεργά.

Slide 29

Slide 29 text

Υποθετικό σενάριο

Slide 30

Slide 30 text

Νέο Project… Ηλεκτρονικό κατάστημα με αντικείμενο την πώληση ηλ. Συσκευών, ή ρούχων, ή οτιδήποτε γενικά, και με στόχο “σταδιακά ο ιστότοπος να εξελίσσεται. Δηλαδή: eShop functionalities (Products Management, etc), Payment Gateways, Warehouse Management REST API’s, Loyalty System, Email & Newsletter System, Orders Management, fancy looking theme, etc... Στήσιμο νέου ηλεκτρονικού καταστήματος CI/CD Development... ● Συνεχόμενη πρόοδος και εξέλιξη του eShop, με προσθήκη λειτουργιών, κλπ ● Διαχωρισμός Production, Staging & Development environments ● Έλεγχος προόδου και επενδεδυμένων εργατοωρών ανά τμήμα κώδικα και λειτουργικού μέρους ● Καταμερισμός εργασιών σε “μικρά” και βατά, ευκολοχώνευτα μέρη.

Slide 31

Slide 31 text

Εγκατάσταση WordPress σε 60” δευτερόλεπτα & σωστή οργάνωση

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

Δημιουργία WP Container για eShops Χρησιμοποιώντας το παρακάτω .yml config file, μπορείτε να φτιάξετε Docker Containers με WordPress & WP CLI.

Slide 34

Slide 34 text

Θέματα προς μελέτη

Slide 35

Slide 35 text

Docker-compose Το πιο σημαντικό εργαλείο-εντολή που θα χρησιμοποιείτε σε καθημερινή βάση για την διαχείριση των container και των εφαρμογών σας.

Slide 36

Slide 36 text

Nginx Μπορεί να χρησιμοποιηθεί σαν web server, reverse proxy, load balancer, mail proxy & HTTP cache.

Slide 37

Slide 37 text

Traeffik Πιθανώς ο πιο δημοφιλές Edge Router για Docker-multicontainer περιβάλλοντα. Χρησιμοποιείται κυρίως για τις ευκολίες που παρέχει, στην αυτόματη διασύνδεση των υπηρεσιών που εκτελείται.

Slide 38

Slide 38 text

SCRUM & Agile Methods Διαδικασίες και μεθοδολογία εργασίας για ομάδες που θέλουν να παράγουν κώδικα τακτικά και μεθοδικά.

Slide 39

Slide 39 text

Σύνοψη

Slide 40

Slide 40 text

By Theodoros Dimitriou