diff --git a/adoc&html_files/README.html b/adoc&html_files/README.html new file mode 100644 index 0000000..98c5175 --- /dev/null +++ b/adoc&html_files/README.html @@ -0,0 +1,728 @@ + + + + + + + +README + + + + + +
+
+
+
+

Για να συνδεθούμε στην εικονική μηχανή τρέχουμε την εντολή.

+
+
+
+
ssh user@<ip>
+password: ****
+
+
+
+
+P4ViujF +
+
+
+ + + + + +
+
Caution
+
+Πρέπει να είστε συνδεδεμένοι στο VPN - Πανεπιστημίου Δυτικής Αττικής +
+
+
+
+
+

Τεχνολογίες

+
+
+

Για την υλοποίηση της εργασίας χρησιμοποιήθηκε η τεχνολογία Docker το οποίο εικονικοποιεί σε επίπεδο λειτουργικού συστήματος.

+
+
+
+
sudo apt-get update
+sudo apt install docker.io
+sudo systemctl start docker
+sudo systemctl enable docker
+
+
+
+ + + + + +
+
Tip
+
+Για να ελέγξουμε ότι η υπηρεσία του Docker λειτουργεί εκτελούμε την εντολή +
+
+
+
+
docker --version
+
+
+
+
+
+

Εκτέλεση Εργασίας

+
+
+

Αρχικά, δημιουργούμε το δικό μας image για τον nginx ανάλογα με τις ανάγκες της υπηρεσίας μας.

+
+
+

Το αποθηκεύουμε σε ένα αρχείο ονομάζοντας το Dockerfile

+
+
+

Επόμενο βήμα είναι η εκτέλεση της παρακάτω εντολής για τη δημιουργία του image

+
+
+
+
docker build -f Dockerfile -t anginx .
+
+
+
+ + + + + +
+
Note
+
+
+

Οptions:

+
+
+
    +
  • +

    -f προσδιορίζει το αρχείο για το build

    +
  • +
  • +

    -t tag (το όνομα του image)

    +
  • +
  • +

    "." είναι το current directory

    +
  • +
+
+
+
+
+

Όλα τα services τα οποία θα τρέξουν στην εργασία μας βρίσκονται στο αρχείο docker-compose.yml

+
+
+

Αναλυτικά:

+
+
+

Nginx

+
+
+
nginx:
+    image: anginx #image from docker building my Dockerfile (docker build -f Dockerfile -t anginx .)  // (1)
+    container_name: production_nginx // (2)
+    volumes:  // (3)
+      - /home/user/docker/nginx.conf:/etc/nginx/conf.d/default.conf
+      - /home/user/docker/cert.pem:/etc/nginx/public.crt
+      - /home/user/docker/key.pem:/etc/nginx/private.key
+    ports: // (4)
+      - 9080:80
+      - 9443:443
+    networks: // (5)
+      - main_net
+
+
+
+
+

MariaDB

+
+
+
mariadb:
+    image: mariadb // (1)
+    container_name: mariadb // (2)
+    volumes:  // (3)
+      - db_data:/var/lib/mysql
+    environment: // (8)
+       MYSQL_ROOT_PASSWORD: wordpress
+       MYSQL_DATABASE: wordpress
+    networks: // (5)
+      - main_net
+
+
+
+
+

WordPress

+
+
+
wordpress:
+    image: wordpress:latest // (1)
+    container_name: wordpress // (2)
+    restart: always
+    deploy: #create replicas with specific resources // (6)
+      mode: replicated
+      replicas: 2
+#      max_replicas_per_node: 1
+      resources:
+        limits: #max resources
+          cpus: '0.50'
+          memory: 50M
+        reservations: #default resources
+          cpus: '0.25'
+          memory: 20M
+    ports: // (4)
+      - 80:80
+    volumes:  // (3)
+      - wp-app:/var/www/html
+    environment: // (8)
+      WORDPRESS_DB_HOST: mariadb:3306
+      WORDPRESS_DB_NAME: wordpress
+      WORDPRESS_DB_USER: root
+      WORDPRESS_DB_PASSWORD: wordpress
+    networks: // (5)
+      - main_net
+    depends_on:  // (7)
+      - mariadb
+
+
+
+
+

PHPMyAdmin

+
+
+
phpmyadmin:
+    image: phpmyadmin/phpmyadmin // (1)
+    container_name: phpmyadmin // (2)
+    deploy: // (6)
+      mode: replicated
+      replicas: 2
+#      max_replicas_per_node: 1
+      resources:
+        limits:
+          cpus: '0.50'
+          memory: 50M
+        reservations:
+          cpus: '0.25'
+          memory: 20M
+    environment: // (8)
+      PMA_HOST: mariadb
+      MYSQL_ROOT_PASSWORD: wordpress
+      PMA_PORT: 3306
+    ports: // (4)
+      - 8080:80
+    networks: // (5)
+      - main_net
+
+
+
+
+

Minio

+
+
+
minio1:
+    image: minio/minio:RELEASE.2020-04-10T03-34-42Z // (1)
+    hostname: minio1
+    volumes:  // (3)
+      - minio1-data:/export
+    ports: // (4)
+      - "9001:9000"
+    networks: // (5)
+      - minio_distributed
+    deploy: // (6)
+      restart_policy:
+        delay: 10s
+        max_attempts: 10
+        window: 60s
+      placement:
+        constraints:
+          - node.labels.minio1==true
+    command: server http://minio{1...4}/export
+    environment: // (8)
+       MINIO_ACCESS_KEY: AKIAIOSFODNN7EXAMPLE
+       MINIO_SECRET_KEY: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
+    # secrets:
+      # - secret_key
+      # - access_key
+    healthcheck:
+      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
+      interval: 30s
+      timeout: 20s
+      retries: 3
+
+
+
+
+

Configuration Options:

+
+
    +
  1. +

    image: Το image file από το οποίο θα τρέξει το service

    +
  2. +
  3. +

    container_name: Είναι το όνομα του service

    +
  4. +
  5. +

    volumes: "Mount host paths or named volumes from our VM to the service"

    +
  6. +
  7. +

    ports: Είναι τα ports τα οποία κάνουμε expose "στον έξω" κόσμο

    +
  8. +
  9. +

    networks: Είναι το εικονικό δίκτυο στο οποίο θα τρέξει το service

    +
  10. +
  11. +

    deploy: Κάνουμε specify τα resources και τον αριθμό των replicas που θα τρέξουν

    +
  12. +
  13. +

    depends_on: "Express dependency between services"

    +
  14. +
  15. +

    environment: "Add environment variables"

    +
  16. +
+
+
+
+
+
+ + \ No newline at end of file