Για να συνδεθούμε στην εικονική μηχανή τρέχουμε την εντολή.
+ssh user@<ip>
+password: ****
+
+ 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: +
+
+
|
+
Όλα τα 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:
+-
+
-
+
image: Το image file από το οποίο θα τρέξει το service
+
+ -
+
container_name: Είναι το όνομα του service
+
+ -
+
volumes: "Mount host paths or named volumes from our VM to the service"
+
+ -
+
ports: Είναι τα ports τα οποία κάνουμε expose "στον έξω" κόσμο
+
+ -
+
networks: Είναι το εικονικό δίκτυο στο οποίο θα τρέξει το service
+
+ -
+
deploy: Κάνουμε specify τα resources και τον αριθμό των replicas που θα τρέξουν
+
+ -
+
depends_on: "Express dependency between services"
+
+ -
+
environment: "Add environment variables"
+
+