You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

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"