5.4 KiB
= README
Για να συνδεθούμε στην εικονική μηχανή τρέχουμε την εντολή.
[source, console]
ssh user@ password: ****
image::https://i.imgur.com/P4ViujF.png[]
[CAUTION] Πρέπει να είστε συνδεδεμένοι στο https://wiki.noc.uniwa.gr/doku.php?id=vpn_service_openvpn[VPN - Πανεπιστημίου Δυτικής Αττικής]
== Τεχνολογίες
Για την υλοποίηση της εργασίας χρησιμοποιήθηκε η τεχνολογία Docker το οποίο εικονικοποιεί σε επίπεδο λειτουργικού συστήματος.
[source, console]
sudo apt-get update sudo apt install docker.io sudo systemctl start docker sudo systemctl enable docker
[TIP] Για να ελέγξουμε ότι η υπηρεσία του Docker λειτουργεί εκτελούμε την εντολή
[source, console]
docker --version
== Εκτέλεση Εργασίας
Αρχικά, δημιουργούμε το δικό μας image για τον nginx ανάλογα με τις ανάγκες της υπηρεσίας μας.
Το αποθηκεύουμε σε ένα αρχείο ονομάζοντας το [underline]#Dockerfile#
Επόμενο βήμα είναι η εκτέλεση της παρακάτω εντολής για τη δημιουργία του image
[source, console]
docker build -f Dockerfile -t anginx .
[NOTE]
Οptions:
- -f προσδιορίζει το αρχείο για το build
- -t tag (το όνομα του image)
- "." είναι το current directory ====
Όλα τα services τα οποία θα τρέξουν στην εργασία μας βρίσκονται στο αρχείο [underline]#docker-compose.yml#
Αναλυτικά:
=== Nginx
[source, yml]
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 [source, yml]
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 [source, yml]
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 [source, yml]
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 [source, yml]
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: :nofooter: <1> image: Το image file από το οποίο θα τρέξει το service <2> container_name: Είναι το όνομα του service <3> volumes: "Mount host paths or named volumes from our VM to the service" <4> ports: Είναι τα ports τα οποία κάνουμε expose "στον έξω" κόσμο <5> networks: Είναι το εικονικό δίκτυο στο οποίο θα τρέξει το service <6> deploy: Κάνουμε specify τα resources και τον αριθμό των replicas που θα τρέξουν <7> depends_on: "Express dependency between services" <8> environment: "Add environment variables"