Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WordPress Development using Docker & Git - Θεόδωρος Δημητρίου

WordPress Development using Docker & Git - Θεόδωρος Δημητρίου

I would like to present a workshop for developers on how to use the famous tools Git & Docker, to do local development on their systems. How to quickly, have a local fresh and clean WP environment for development purposes, that is containerized and uses code versioning, that allows teams of any size to work together on the same dev environment.

WordPress Greek Community

April 16, 2021
Tweet

More Decks by WordPress Greek Community

Other Decks in Programming

Transcript

  1. Σκοπός του WorkShop 1. Να διδάξει τις βασικές εντολές για

    χρήση τερματικού CMD 2. Να διδάξει την δημιουργία κλειδιών SSH 3. Να διδάξει τις βασικές λειτουργίες του Git 4. Να διδάξει τις βασικές λειτουργίες του Docker 5. Να παρουσιάσει τα αρχεία ρυθμίσεων .yml & .yaml configuration files 6. Να διδάξει πως γίνεται μια τοπική εγκατάσταση ενός ολοκληρωμένου συστήματος WordPress & WooCommerce χρησιμοποιώντας containers.
  2. Απαιτούμενα για συμμετοχή Το 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 λειτουργούν σε όλα τα δημοφιλή Λειτουργικά Συστήματα.
  3. Απαιτούμενα για συμμετοχή #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.)
  4. 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
  5. Βασικές εντολές γραμμής εντολών CMD #2 cd “path/” Εντολή για

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

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

    Control Έλεγχος και καταγραφή κάθε αλλαγής στον πηγαίο κώδικα
  8. 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 Το “κεντρικό” αποθετήριο όπου βρίσκεται ο κώδικας
  9. Βασικές εντολές χρήσης Git git clone git branch git checkout

    git status git add git commit git push git pull git merge
  10. Εισαγωγή στο Docker Ένα Docker Container, είναι με λίγα λόγια

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

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

    ότι κάθε φορά που ενεργοποιείται ένα Container, τότε αυτό φορτώνει μόνο ότι δηλώνετε στα .yml config files. Συνδέοντας ένα Volume το οποίο πρακτικά είναι μια αντιστοίχιση ενός φακέλου τοπικά στο σύστημα σας, με ένα εικονικό δίσκο στο Container, τότε μπορείτε να αποθηκεύετε τις αλλαγές σας και να μην χάνονται με κάθε reboot.
  13. Docker Networks Επειδή το Host OS, μπορεί να αλλάζει τα

    Ports και τις IP addresses, κάθε φορά που επανεκκινούμε ένα Container, φτιάχνουμε εικονικά δίκτυα όπου ορίζουμε τα Containers και το καθένα έχει την δικιά του ΙΡ.
  14. Docker Compose Το Docker Compose, είναι ένα εργαλείο που μας

    βοηθάει να ενορχηστρώσουμε και διαχειριστούμε εύκολα πολλαπλά Containers και ολα τα Dependencies τους. Μια τυπική εγκατάσταση συνήθως έχει 3 με 4 containers. • Frontend • Backend • Database • Cache
  15. 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 που εργάζεστε και αυτό εξαρτάται από τις εταιρικές και προσωπικές σας προτιμήσεις.
  16. Εγκατάσταση 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
  17. Απαιτούμενα Δοκιμαστική εγκατάσταση • Git • Docker • 1 Empty

    Directory • 1 .yml config αρχείο • Internet connection
  18. Έναρξη εγκατάστασης 1. Δημιουργία ενός νέου φακέλου (mkdir wp-workshop, είτε

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

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

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

    Browser και δίνουμε την τοπική μας διεύθυνση και την πόρτα επικοινωνίας IP:Port or URL:Port 192.168.0.1:80 localhost:80
  22. Docker & WordPress Εφόσον ολοκληρώθηκαν επιτυχώς τα προηγούμενα βήματα, τότε

    γράφουμε την παρακάτω εντολή για να ξεκινήει η δημιουργια του WordPress Docker Container. $docker-compose up -d Και μετά δώστε την εντολή $docker ps Για να δείτε λεπτομέρειες για τα Container που είναι ενεργά.
  23. Νέο 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 • Έλεγχος προόδου και επενδεδυμένων εργατοωρών ανά τμήμα κώδικα και λειτουργικού μέρους • Καταμερισμός εργασιών σε “μικρά” και βατά, ευκολοχώνευτα μέρη.
  24. Δημιουργία WP Container για eShops Χρησιμοποιώντας το παρακάτω .yml config

    file, μπορείτε να φτιάξετε Docker Containers με WordPress & WP CLI.
  25. Docker-compose Το πιο σημαντικό εργαλείο-εντολή που θα χρησιμοποιείτε σε καθημερινή

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

    Χρησιμοποιείται κυρίως για τις ευκολίες που παρέχει, στην αυτόματη διασύνδεση των υπηρεσιών που εκτελείται.
  27. SCRUM & Agile Methods Διαδικασίες και μεθοδολογία εργασίας για ομάδες

    που θέλουν να παράγουν κώδικα τακτικά και μεθοδικά.