Lancez LAMP et des centaines d'autres applications Web en quelques clics

image Dans un article précédent, j'ai expliqué comment SSHeller vous aide à déployer rapidement et facilement un serveur OpenVPN. Dans la version 1.1.0 , un autre plugin a été ajouté - Docker .
Je tiens à vous avertir immédiatement que si vos mains sont aiguisées sous la console, et que contrÎler Docker via la ligne de commande semble pratique et intuitif, vous n'avez pas besoin de lire plus loin, vous n'avez pas besoin d'écrire quoi que ce soit dans les commentaires, je sais déjà que vous n'avez pas besoin de SSHeller.


Et qui en a besoin? Tout d'abord, les développeurs d'applications Web, ainsi que tous ceux qui ont besoin de mettre à niveau rapidement et facilement une sorte de service, que ce soit un site Web, un blog ou un service de partage de fichiers impromptu.


Comment ça marche


Nous avons besoin d'un serveur avec presque toutes les distributions Linux modernes. Mais, contrairement à OpenVPN, pour Docker, je recommanderais Debian 9 ou Ubuntu 18.04 . Avec Fedora et Centos choses sont un peu pires, car vous devez installer plus de packages, configurer l'exécution automatique en plus et travailler avec le stockage est un peu différent.


La chose la plus importante est qu'il devrait s'agir d'une machine physique ou virtuelle, mais pas d'un conteneur (LXC, OpenVZ ne fonctionnera pas). Et vous avez besoin d'un accÚs SSH. Dans la derniÚre publication, il y a une description détaillée de la façon d'enregistrer et de démarrer le serveur dans DigitalOcean, et à la fin - une instruction légÚrement moins détaillée pour Linode. Ces deux services offrent des machines simples pour 5 $ / mois et des bonus lors de l'inscription par lien de parrainage. Pour commencer, ce sera tout à fait suffisant.


Une fois que nous avons l'IP, le nom d'utilisateur et le mot de passe du serveur, vous pouvez installer SSHeller. Vous pouvez le télécharger à partir des versions sur GitHub , il existe des versions pour macOS, Windows et Linux. AprÚs le démarrage, ajoutez notre serveur, connectez-vous à celui-ci et accédez au plug-in Docker .



Si Docker n'est pas déjà installé sur le serveur, vous pouvez le faire en cliquant sur le bouton Install .
En moins d'une minute, l'installation est terminĂ©e, un rapport s'ouvre que vous pouvez pas lire et fermer, et dans la fenĂȘtre principale, il y aura une liste de conteneurs, volumes et la forme de lancement d'un nouveau conteneur.



Fonctions principales


Lancement de conteneurs


Tout en bas de l'espace de travail se trouve le bloc de lancement du nouveau conteneur. Il affiche:


  • volume sĂ©lectionnĂ© dans la liste ci-dessus qui sera connectĂ© au conteneur, s'il le prend en charge
  • le mot de passe qui sera dĂ©fini pour l'application dans le conteneur, encore une fois, s'il le prend en charge
  • sĂ©lection d'image de conteneur
  • et sĂ©lection de balises d'image

Vous pouvez choisir n'importe quelle image Docker officielle et quelques autres. Leur liste est définie dans le fichier https://github.com/delfer/ssheller/blob/master/plugins/docker-profiles.json et au moment de la publication, elle est:


  • jwilder / nginx-proxy - Nginx configurĂ© automatiquement pour accĂ©der aux conteneurs via un nom de domaine, pas un port
  • panubo / vsftpd - serveur FTP
  • coderaiser / cloudcmd - Interface WEB pour accĂ©der aux fichiers
  • webdevops / php-apache-dev - construire des modules Apache + PHP + pour le dĂ©veloppement (affiche les erreurs)
  • webdevops / php-apache - construire des modules Apache + PHP + pour "vendre" (n'affiche pas les erreurs)
  • webdevops / php-nginx-dev - construire des modules Nginx + PHP + pour le dĂ©veloppement (affiche les erreurs)
  • webdevops / php-nginx - construire des modules Nginx + PHP + pour "vendre" (n'affiche pas les erreurs)

La plupart des conteneurs ignoreront le contenu du champ Mot de passe , à l'exception de ceux répertoriés dans docker-profiles.json (section paramÚtres ):


  • panubo / vsftpd - mot de passe pour la connexion FTP en tant qu'administrateur
  • coderaiser / cloudcmd - mot de passe pour la connexion en tant qu'administrateur
  • mysql / mariadb / postgres / influxdb - mot de passe pour se connecter Ă  la base de donnĂ©es db en tant qu'administrateur
  • rabbitmq / couchdb / orientdb - mot de passe pour se connecter en tant qu'administrateur

Caractéristiques importantes:


  • Les balises sont chargĂ©es automatiquement aprĂšs avoir sĂ©lectionnĂ© une image. Recherche disponible
  • Le conteneur sera disponible sur le port indiquĂ© par son auteur. Si le port est occupĂ©, le premier port libre sera sĂ©lectionnĂ©.
  • Le conteneur sera disponible sur le <nom du conteneur>. <Domaine du serveur> s'il existe des entrĂ©es correspondantes dans le DNS
  • Les volumes seront créés pour le conteneur s'ils ont Ă©tĂ© spĂ©cifiĂ©s par l'auteur de l'image ou s'ils sont spĂ©cifiĂ©s dans docker-profiles.json ( volumes de section)

Conseils utiles:


  • jwilder / nginx-proxy doit ĂȘtre dĂ©marrĂ© en premier pour qu'il occupe le port 80
  • panubo / vsftpd doit ĂȘtre exĂ©cutĂ© en dernier, car lorsqu'il dĂ©marre, il modifie les autorisations du dossier afin d'y avoir un accĂšs complet
  • il est presque toujours prĂ©fĂ©rable d'utiliser une image avec la balise alpine ou la latest-alpine - elles fonctionnent exactement comme les normales, mais se chargent beaucoup plus rapidement en raison d'un poids moindre
  • si vous avez besoin de MySQL - utilisez mieux MariaDB , sauf si, bien sĂ»r, vous n'ĂȘtes certainement pas sĂ»r que MariaDB ne vous convient pas
  • si vous exĂ©cutez quelque chose avec PHP , alors vous n'avez probablement pas besoin de fpm , mais vous avez besoin d' apache

Information additionnelle
AprĂšs avoir cliquĂ© sur le bouton RUN , dĂšs que le conteneur est lancĂ©, une fenĂȘtre de rapport apparaĂźt, dans laquelle la docker run terminĂ©e sera indiquĂ©e. Elle dira beaucoup de choses intĂ©ressantes sur la façon dont tout est rĂ©ellement organisĂ©.


AccĂšs aux noms de domaine


Si vous exécutez plusieurs conteneurs avec une interface Web, par exemple, Wordpress et NextCloud, et que vous souhaitez y accéder non pas en spécifiant une adresse IP et un port, mais par un nom de domaine, vous devez remplir deux conditions simples:


  1. Soyez le premier à exécuter jwilder / nginx-proxy
  2. Avoir un enregistrement DNS générique


C'est-à-dire si, par exemple, vous disposez du domaine example.com, vous devez lui ajouter un enregistrement * type A et spécifier l'IP du serveur. Dans ce cas, le conteneur de travail en cours d' exécution sera disponible sur http://wordpress.example.com


Et s'il n'y a pas de domaine - pas de problÚme, vous pouvez utiliser le service nip.io - vous n'avez pas besoin d'enregistrer ou d'ajouter des entrées. Si, par exemple, votre serveur a l'IP 172.104.129.183 et que jwilder / nginx-proxy et nextcloud s'exécutent dessus , ce dernier sera disponible sur http://nextcloud.172.104.129.183.nip.io


Exécution de deux conteneurs avec un volume


Il arrive souvent, par exemple, qu'un conteneur publie des fichiers ( nginx ) et que le second télécharge ( panubo / vsftpd ). Ou le second est nécessaire pour afficher / télécharger le contenu du premier.


Par exemple, Jenkins aprÚs le démarrage demande le mot de passe enregistré dans le fichier.



  1. Lancez Jenkins
  2. jenkins_var_jenkins_home son volume jenkins_var_jenkins_home
  3. Spécifiez un mot de passe pour l'accÚs
  4. Lancer coderaiser / cloudcmd
  5. Ouverte http: // coderaiser-cloudcmd . <domaine>, entrez le nom d'utilisateur et le mot de passe administrateur à l' étape 3
  6. Nous regardons le mot de passe de Jenkins



Interactions avec les conteneurs


En outre, vous devrez peut-ĂȘtre vous connecter Ă  un autre Ă  partir d'un conteneur. Par exemple, wordpress lors de l'installation vous demandera de spĂ©cifier les paramĂštres de connexion Ă  la base de donnĂ©es: adresse du serveur ( hĂŽte ) et port.


localhost ne fonctionnera pas pour l'interaction entre les conteneurs.


En général, vous devez spécifier l'adresse IP externe du serveur et le port affiché
avant la flÚche ( -> ) dans la liste des conteneurs. Par souci de simplicité, la possibilité a été ajoutée à la place de l'adresse IP du serveur de spécifier uniquement le mot host .


En plus de MySQL, PostgreSQL, MongoDB, Redis, memcached, Tomcat, InfluxDB, CouchDB, etc. peuvent ĂȘtre utiles.


Exemples d'utilisation


Partage de fichiers


  1. Run nginx: alpine
  2. Entrez le mot de passe administrateur pour l'interface Web
  3. Sélectionnez le volume nginx_usr_share_nginx_html
  4. Lancer coderaiser / cloudcmd: latest-alpine

Vous pouvez maintenant accéder à http: // <adresse du serveur>: 8000 pour télécharger des fichiers avec autorisation, et des liens directs seront disponibles via http: // <adresse du serveur> . Il vous suffit de spécifier le chemin d'accÚs complet au fichier.


Wordpress


  1. Nous inventons et saisissons un mot de passe pour la base de données
  2. Mariadb lance
  3. Exécutez WordPress: Apache
  4. Nous allons à l'adresse http: // <adresse du serveur> , démarrons l'installation et spécifions les paramÚtres de connexion au SGBD:
    • Nom de la base de donnĂ©es: db
    • Nom d'utilisateur: admin
    • Mot de passe - celui entrĂ© au paragraphe 1
    • Serveur de base de donnĂ©es: host
    • PrĂ©fixe de table - Tout

Lampe


  1. Nous inventons et saisissons un mot de passe pour la base de données
  2. Mariadb lance
  3. Exécutez webdevops / php-apache-dev: alpine
  4. Sélectionnez le volume webdevops-php-apache-dev_app
  5. Nous inventons et saisissons le mot de passe du serveur FTP
  6. Exécutez panubo / vsftpd

Vous pouvez maintenant télécharger des fichiers .php vers ftp: // <adresse du serveur> et les exécuter en allant à l'adresse http: // <adresse du serveur>


PS


Tous les conteneurs ne sont pas disponibles dans l'application, et certains des conteneurs disponibles ne fonctionnent pas sans paramÚtres supplémentaires - modifiez le fichier sur GitHub et envoyez vos demandes d'extraction. Si vous ne savez pas comment - ouvrez Issue . Cela vous aidera à développer le projet.


Le fichier README contient d' autres moyens de soutenir le projet, ainsi que de nombreuses informations utiles.

Source: https://habr.com/ru/post/fr413743/


All Articles