Sarvtor.ru

SarVtor.Ru
1 просмотров
Π Π΅ΠΉΡ‚ΠΈΠ½Π³ ΡΡ‚Π°Ρ‚ΡŒΠΈ
1 Π·Π²Π΅Π·Π΄Π°2 Π·Π²Π΅Π·Π΄Ρ‹3 Π·Π²Π΅Π·Π΄Ρ‹4 Π·Π²Π΅Π·Π΄Ρ‹5 Π·Π²Π΅Π·Π΄
Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°...

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Docker, ΠΈ ΠΊΠ°ΠΊ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ рассказываСм

Π­Ρ‚ΠΎ ПО с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ всСго ΡΡ€Π°Π²Π½ΠΈΡ‚ΡŒ с транспортными ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ. Волько ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, вСдь ΠΊΠΎΠ³Π΄Π°-Ρ‚ΠΎ транспортныС ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ ΡΡ‚Π°Π»ΠΊΠΈΠ²Π°Π»ΠΈΡΡŒ с ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌΠΈ:

  1. Как ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ·ΠΈΡ‚ΡŒ Ρ€Π°Π·Π½Ρ‹Π΅ (нСсовмСстимыС) Ρ‚ΠΈΠΏΡ‹ Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² вмСстС (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹ питания с Ρ…ΠΈΠΌΠΈΠΊΠ°Ρ‚Π°ΠΌΠΈ ΠΈΠ»ΠΈ стСкло с ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΎΠΌ)?
  2. Как ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ транспортным срСдством?

Π‘ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² стало Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ·ΠΈΡ‚ΡŒ вмСстС ΠΊΠΈΡ€ΠΏΠΈΡ‡ΠΈ ΠΈ стСкло, Ρ…ΠΈΠΌΠΈΠΊΠ°Ρ‚Ρ‹ ΠΈ Π΅Π΄Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠ½ΠΎΠ³ΠΎΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Π“Ρ€ΡƒΠ· Ρ€Π°Π·Π½ΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ распрСдСлСн ΠΏΠΎ стандартизированным ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ/Π²Ρ‹Π³Ρ€ΡƒΠΆΠ°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ транспортным срСдством.

Но вСрнСмся ΠΆΠ΅ ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌ. Когда Π²Ρ‹ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ вмСстС со всСми Π΅Π³ΠΎ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΌΠΈ, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, сСрвСр, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ‚. Π΄. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ Π² ситуации, ΠΊΠΎΠ³Π΄Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, Π½ΠΎ отказываСтся Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ Π½Π° устройствС Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ.

Π­Ρ‚Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Ρ€Π΅ΡˆΠ°Π΅Ρ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· созданиС нСзависимости ПО ΠΎΡ‚ систСмы.

ИспользованиС Docker для Ρ‡Π°ΠΉΠ½ΠΈΠΊΠΎΠ²

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ эта инструкция ΠΏΡ€ΠΎ Docker для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, я Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ сразу ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ ΠΏΡ€ΠΎ запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π²Ρ‹ ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ основы Docker, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ здСсь Π²Π°ΠΌ пригодится. Π’Π°ΠΌ рассказано ΠΊΠ°ΠΊ всё Π΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, Π° здСсь ΠΌΡ‹ ΡƒΠΆΠ΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΊΠ°ΠΊ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот процСсс.

1. Установка docker-compose

Если ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΅Ρ‰Ρ‘ Π½Π΅ установлСна, Π΅Ρ‘ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ. Для этого Π½Π°Π΄ΠΎ просто ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ исполняСмый Ρ„Π°ΠΉΠ» ΠΈΠ· ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ²:

sudo curl -L «https://github.com/docker/compose/releases/download/1.25.0/docker-compose-$(uname -s)-$(uname -m)» -o /usr/local/bin/docker-compose

И Π΄Π°Ρ‚ΡŒ Π΅ΠΌΡƒ ΠΏΡ€Π°Π²Π° Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅:

sudo chmod +x /usr/local/bin/docker-compose

ПослС этого Π²Ρ‹ смоТСтС ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π΅Ρ‘ Π²Π΅Ρ€ΡΠΈΡŽ:

2. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Если Π²Ρ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΠΈΠ΅ docker, Ρ‚ΠΎ, Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅, Π·Π°ΠΌΠ΅Ρ‡Π°Π»ΠΈ, Ρ‡Ρ‚ΠΎ Π² ΠΏΠ°ΠΏΠΊΠ΅ с ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ Π»Π΅ΠΆΠΈΡ‚ Ρ„Π°ΠΉΠ» ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ docker-compose.yaml. ИмСнно Π² этом Ρ„Π°ΠΉΠ»Π΅ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ для вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°, ΠΏΠΎΡ‚ΠΎΠΌ ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ созданы автоматичСски с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ docker-compose. Π€Π°ΠΉΠ» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ синтаксис YAML ΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅:

ВСрсия ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Π΅Ρ€ΡΠΈΡŽ синтаксиса Ρ„Π°ΠΉΠ»Π°, Π² Ρ€Π°Π·Π½Ρ‹Ρ… вСрсиях доступны Ρ€Π°Π·Π½Ρ‹Π΅ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, это сдСлано для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости. ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ 3.5. Π”Π°Π»Π΅Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° (volumes), сСти (networks) ΠΈ сами ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.

Бинтаксис YAML ΠΏΠΎΡ…ΠΎΠΆ Π½Π° JSON, здСсь Ρ‚ΠΎΠΆΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡: Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ΠΌ, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚ΡƒΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ, ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΊΠ»ΡŽΡ‡ΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ массивом Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт массива начинаСтся с Ρ‡Ρ‘Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ «-«. Но Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ JSON, здСсь ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½Ρ‹ отступы, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ, поэтому Π½Π΅ тСряйтС ΠΈΡ….

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅:
Как ΠΏΡ€ΠΈΠ³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒ Ρ†Π΅ΠΌΠ΅Π½Ρ‚Π½ΡƒΡŽ смСсь для Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°

Π”Π°Π²Π°ΠΉΡ‚Π΅ создадим ΠΏΠ°ΠΏΠΊΡƒ losst-docker ΠΈ создадим Π² Π½Π΅ΠΉ Ρ„Π°ΠΉΠ» docker-compose.yaml:

version: ‘3.5’
services:

3. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Рассмотрим содСрТимоС самого простого ΠΏΡƒΠ½ΠΊΡ‚Π° настройки ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°:

Π—Π΄Π΅ΡΡŒ Π½Π°ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½Π°Π΄ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·, Π½Π° основании ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠ½ Π±ΡƒΠ΄Π΅Ρ‚ создан. Π§Π΅Ρ€Π΅Π· Π΄Π²ΠΎΠ΅Ρ‚ΠΎΡ‡ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. ВСрсии ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π½Π° Dockerhub ΠΎΠ½ΠΈ Ρ‚Π°ΠΌ ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ tags. Если вСрсия Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ latest, послСдняя.

НапримСр, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для Π²Π΅Π±-сСрвСра Nginx:

Π£ΠΆΠ΅ имСя эти Π΄Π°Π½Π½Ρ‹Π΅ Π² ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€.

4. Запуск ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ²

Когда настройка docker Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°, Π½Π°Π΄ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹. Π§Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², Π½Π°ΡΡ‚Ρ€ΠΎΠ΅Π½Π½ΡƒΡŽ Π² docker-compose.yaml Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² ΠΏΠ°ΠΏΠΊΡƒ, Π³Π΄Π΅ находится этот Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ‚Π°ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ docker-compose up. НапримСр:

ПослС этого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹, всС ΠΈΡ… ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π²Ρ‹Π²ΠΎΠ΄Π° Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Ρ‹ Π² ΠΎΠ΄ΠΈΠ½ ΠΈ Π²Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ выводится информация Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π». Π§Ρ‚ΠΎΠ±Ρ‹ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ достаточно Π½Π°ΠΆΠ°Ρ‚ΡŒ Ctrl+C. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ -d:

docker-compose up -d

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ stop:

Команда down Π½Π΅ просто останавливаСт всС Π·Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹, Π½ΠΎ ΠΈ удаляСт ΠΈΡ…:

ΠžΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΠΎΠΊΠ° этот ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€, ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Π΅Π³ΠΎ настройку.

5. ΠŸΠΎΡ€Ρ‚Ρ‹ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, Π½ΠΎ Ρ‚ΠΎΠ»ΠΊΡƒ ΠΏΠΎΠΊΠ° Π½Π°ΠΌ ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΌΠ°Π»ΠΎ. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ docker ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΡ€Ρ‚ 80 ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΡƒΡŽ систСму ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΊ Π½Π΅ΠΌΡƒ доступ. Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ ports. Бинтаксис Ρ‚Π°ΠΊΠΎΠΉ:

ports:
— внСшний_ΠΏΠΎΡ€Ρ‚ : Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΏΠΎΡ€Ρ‚

НапримСр, пробросим ΠΏΠΎΡ€Ρ‚ 80 ΠΊΠ°ΠΊ 8094:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΠΈ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ страницу, ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‰ΡƒΡŽ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Nginx Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ адрСсу http://localhost:8094:

Но это всС Π΅Ρ‰Ρ‘ Π½Π΅ интСрСсно, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Ρ‚ΡŒ Ρ‚Π°ΠΌ свои Ρ„Π°ΠΉΠ»Ρ‹. БСйчас это исправим.

6. ΠœΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΏΠΎΠΊ

Для монтирования Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ ΠΈΠ»ΠΈ Π²Π½Π΅ΡˆΠ½ΠΈΡ… ΠΏΠ°ΠΏΠΎΠΊ хоста ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡƒΠ½ΠΊΡ‚ volumes. Бинтаксис ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с ΠΏΠΎΡ€Ρ‚Π°ΠΌΠΈ:

volumes:
— /ΠΏΡƒΡ‚ΡŒ/ΠΊ/внСшнСй/ΠΏΠ°ΠΏΠΊΠ΅ : /ΠΏΡƒΡ‚ΡŒ/ΠΊ/Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ/ΠΏΠ°ΠΏΠΊΠ΅

НапримСр, Π΄Π°Π²Π°ΠΉΡ‚Π΅ создадим Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Ρ„Π°ΠΉΠ» index.html ΠΈ смонтируСм эту ΠΏΠ°ΠΏΠΊΡƒ вмСсто ΠΏΠ°ΠΏΠΊΠΈ /usr/share/nginx/html/ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°:

ПослС пСрСзапуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° Π²Ρ‹ ΡƒΠ²ΠΈΠ΄ΠΈΡ‚Π΅ Π² Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ ΡƒΠΆΠ΅ свою страницу. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΎΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ всё, начиная ΠΎΡ‚ исходников ΠΈ заканчивая ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ. ΠžΡ‡Π΅Π½ΡŒ ΡƒΠ΄ΠΎΠ±Π½ΠΎ.

7. Настройка Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСшниС ΠΏΠ°ΠΏΠΊΠΈ, Π½ΠΎ ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°, создаваСмыС Π² docker. Для этого сначала Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π² Π³Π»Π°Π²Π½ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ volumes. НапримСр losst-vl:

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅:
Π’Π΅Π±Π΅Ρ€ ΡˆΡ‚ΡƒΠΊ Ρ†Π΅ΠΌΠ΅Π½Ρ‚ Π²ΠΈΠ½Ρ‚Π΅Ρ€

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ Π²Π΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, MySQL. Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π΅Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для этой Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π² Π½Π΅Π³ΠΎ нашС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅. Π₯Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ добавляСтся Ρ‚Π°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ внСшняя ΠΏΠ°ΠΏΠΊΠ°, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ вмСсто ΠΏΠ°ΠΏΠΊΠΈ указываСтся Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°:

Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ Π΅Ρ‰Ρ‘ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΏΡƒΠ½ΠΊΡ‚ environment, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π·Π°Π΄Π°Π»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ окруТСния для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Они Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ имя Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ root, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, с ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ окруТСния Π½Π΅Ρ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного.

8. Настройка сСти

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ собой. Π£ нас ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ Nginx ΠΈ MySQL, ΠΈΠΌ ΠΏΠΎΠΊΠ° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ ΠΊ Π΄Ρ€ΡƒΠ³Ρƒ, Π½ΠΎ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρƒ нас появится ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для PhpMyAdmin, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½Π°Π΄ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ ΠΊ MariaDB ситуация помСняСтся. Для взаимодСйствия ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°ΠΌΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ сСти, ΠΎΠ½ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΏΠΎΡ…ΠΎΠΆΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½Π° Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π°. Π‘Π½Π°Ρ‡Π°Π»Π° Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠ΅Ρ‚ΡŒ Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ networks:

Π—Π°Ρ‚Π΅ΠΌ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ ΠΊ этой сСти, Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΠ΅Ρ‚ΡŒ Π² Ρ€Π°Π·Π΄Π΅Π» networks.

Π”Π°Π»Π΅Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π±ΡƒΠ΄ΡƒΡ‚ доступны ΠΏΠΎ сСти ΠΏΠΎ ΠΈΡ… ΠΈΠΌΠ΅Π½ΠΈ. НапримСр, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ PhpMyAdmin ΠΈ Π΄Π°Π΄ΠΈΠΌ Π΅ΠΌΡƒ доступ ΠΊ Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…:

Π—Π΄Π΅ΡΡŒ Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ PMA_HOST ΠΌΡ‹ ссылаСмся Π½Π° хост docker-mariadb, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ благодаря ΠΎΠ±Ρ‰Π΅ΠΉ сСти этих ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² доступСн. Аналогично Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ docker-mariadb, наш ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ с PhpMyAdmin доступСн ΠΊΠ°ΠΊ docker-phpmyadmin. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ адрСс http://localhost:8095 ΠΈ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚:

9. ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°

Π­Ρ‚ΠΎ ΡƒΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ слоТныС Π²Π΅Ρ‰ΠΈ, Π½ΠΎ Π·Π°Ρ‚ΠΎ Π²Ρ‹ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ΡΡŒ с Docker Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅. Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡ‚ΠΈΡΡŒ Π±Π΅Π· ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΈΠ½ΠΎΠ³Π΄Π° Ρ‚ΡƒΠ΄Π° Π½Π°Π΄ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ спСцифичСскиС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Π»ΠΈΠ±ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, для Ρ‚Π°ΠΊΠΈΡ… случаСв docker-compose позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π½Π° основС ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±Ρ€Π°Π·ΠΎΠ². Для этого Π½Π°Π΄ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Dockerfile Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Π”Π°Π²Π°ΠΉΡ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ php-fpm ΠΈ установим Π² Π½Π΅Π³ΠΎ нСсколько Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ php с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Dockerfile.

Π‘Π½Π°Ρ‡Π°Π»Π° создадим ΠΏΠ°ΠΏΠΊΡƒ для Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°:

FROM php:7.2.26-fpm-stretch
RUN docker-php-ext-install pdo pdo_mysql pcntl

Π’ΠΎΡ‚ основныС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² этом Ρ„Π°ΠΉΠ»Π΅:

  • FROM — ΠΎΠ±Ρ€Π°Π·, Π½Π° основС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒΡΡ наш ΠΎΠ±Ρ€Π°Π·;
  • RUN — Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π² ΠΎΠΊΡ€ΡƒΠΆΠ΅Π½ΠΈΠΈ ΠΎΠ±Ρ€Π°Π·Π°;
  • COPY — ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² ΠΎΠ±Ρ€Π°Π·;
  • WORKDIR — Π·Π°Π΄Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ ΠΏΠ°ΠΏΠΊΡƒ для ΠΎΠ±Ρ€Π°Π·Π°;
  • ENV — Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ окруТСния ΠΎΠ±Ρ€Π°Π·Π°;
  • CMD — Π·Π°Π΄Π°Ρ‚ΡŒ основной процСсс ΠΎΠ±Ρ€Π°Π·Π°;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²ΡƒΡŽ ΡΠ΅ΠΊΡ†ΠΈΡŽ Π² наш docker-compose.yaml. Π—Π΄Π΅ΡΡŒ вмСсто image ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρƒ build, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°Π΄ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΏΠ°ΠΏΠΊΠ΅ с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ ΠΎΠ±Ρ€Π°Π·Π°:

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅:
ВСс Π²Π°Π³ΠΎΠ½Π° с Ρ†Π΅ΠΌΠ΅Π½Ρ‚ΠΎΠΌ

Π”Π°Π»ΡŒΡˆΠ΅, Ρ€Π°Π· ΠΌΡ‹ ΡƒΠΆΠ΅ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ php-fpm Π½Π°Π΄ΠΎ ΠΏΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ для Nginx Π²Π΅Ρ€Π½Ρ‹ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ php-fpm. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΏΠ°ΠΏΠΊΡƒ nginx ΠΈ помСститС Π² Π½Π΅Ρ‘ Ρ‚Π°ΠΊΠΎΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ»:

server <
listen 80;
server_name _ !default;
root /var/www/;
add_header X-Frame-Options «SAMEORIGIN»;
add_header X-XSS-Protection «1; mode=block»;
add_header X-Content-Type-Options «nosniff»;
index index.html index.htm index.php;
charset utf-8;
location / <
try_files $uri $uri/ /index.php?$query_string;
>
error_page 404 /index.php;
location

.php$ <
fastcgi_pass docker-php-fpm:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
include fastcgi_params;
>
>

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ nginx. ΠŸΡ€ΠΈΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΈ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ°ΠΏΠΊΡƒ для Π²Π΅Π±-Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ:

ΠžΡΡ‚Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» index.php ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹:

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π°, Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π΅Π΄ запуском Π±ΡƒΠ΄Π΅Ρ‚ собран Π½ΠΎΠ²Ρ‹ΠΉ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° основС Ρ„Π°ΠΉΠ»Π° Dockerfile. Π’Π°ΠΊΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π·, Ссли ΠΎΠ½ΠΈ Π½Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… ΠΏΠ΅Ρ€Π΅ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΎΠΏΡ†ΠΈΡŽ —build:

docker-compose up —build

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡ†Π΅Π½Π½ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ доступно Π½Π° вашСм ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π΅, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…, PHP ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ Ρ‡Π΅Π³ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ Π½Π΅Π΄ΠΎΡΡ‚Π°ΡŽΡ‰ΠΈΠ΅ Π²Π°ΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹.

10. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ

Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ docker-compose Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡΡ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ ΠΈΠ· Π³Ρ€ΡƒΠΏΠΏΡ‹. Для этого просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ exec. НапримСр, запуститС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Ρ„ΠΎΠ½ΠΎΠ²ΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅:

docker-compose up -d

И ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ docker-compose exec. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΠΌΡΡ ΠΊ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρƒ с Nginx:

docker-compose exec docker-nginx /bin/bash

ΠŸΠ΅Ρ€Π΅Π΄ Π²Π°ΠΌΠΈ откроСтся ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠ° Bash этого ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π£ΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ здСсь Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Π½Π΅ рСкомСндуСтся, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ всё сотрётся послС удалСния ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, Π½ΠΎ для тСстирования Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ‡Π΅Π³ΠΎ Π»ΠΈΠ±ΠΎ такая Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‡Π΅Π½ΡŒ кстати.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Dockerfile

На Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΌΡ‹ создадим для Dockerfile Π½ΠΎΠ²ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Dockerfile.
Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ пустой Ρ„Π°ΠΉΠ» Π² Π½Π΅ΠΉ

Π—Π°Ρ‚Π΅ΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±Ρ€Π°Π· трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ. Π’ Π΄Π°Π½Π½ΠΎΠΌ руководствС ΠΌΡ‹ установим Nginx ΠΈ PHP-FPM7, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΎΠ±Ρ€Π°Π· Ubuntu 18.04. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π°ΠΌ потрСбуСтся Supervisord, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Nginx ΠΈ PHP-FPM 7 ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ.
ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Dockerfile Π² любом тСкстовом Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ vim:

Π’ Π½Π°Ρ‡Π°Π»Π΅ Ρ„Π°ΠΉΠ»Π° Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ строку с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ (Ubuntu 18.04):

Обновим ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Ubuntu Π²Π½ΡƒΡ‚Ρ€ΠΈ Dockerfile ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ β€˜RUNβ€˜.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ установим прилоТСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ для нашСго ΠΎΠ±Ρ€Π°Π·Π°. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ apt ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Nginx, PHP-FPM ΠΈ Supervisord ΠΈΠ· рСпозитория Ubuntu. Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ RUN:

ПослС установки ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΡ… Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ. ΠœΡ‹ настроим Nginx для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с PHP ΠΏΡƒΡ‚Π΅ΠΌ измСнСния ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ хоста ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. МоТно ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ sed ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π½ΠΎΠ²Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Dockerfile COPY.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅:
ΠšΠΈΡ€ΠΏΠΈΡ‡ Ρ†Π΅ΠΌΠ΅Π½Ρ‚ пСсок ΠΎΠΏΠΈΠ»ΠΊΠΈ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ настроим Supervisord для Nginx and PHP-FPM, Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ Π·Π°ΠΌΠ΅Π½ΠΈΠ² Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π½ΠΎΠ²Ρ‹ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠΌ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ COPY.

Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π½ΠΎΠ²ΡƒΡŽ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ для sock-Ρ„Π°ΠΉΠ»Π° php-fpm ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠΌ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ /var/www/html ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ PHP Π½Π° www-data.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΌΠΎΠ½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Π΅ Π½ΠΈΠΆΠ΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° хост:

НаконСц, Π½ΡƒΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΏΡ€ΠΈ запускС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΎΡ€Ρ‚Ρ‹ для HTTP ΠΈ HTTPS. Для Π·Π°Π΄Π°Π½Π½ΠΎΠΉ β€˜CMD’ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΌΡ‹ создадим Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ»

start.sh, содСрТащий ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Β«supervisordΒ», ΠΈ скопируСм Π΅Π³ΠΎ Π² Π½ΠΎΠ²Ρ‹ΠΉ ΠΎΠ±Ρ€Π°Π· ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ β€˜COPYβ€˜.

Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΠΎΡ€Ρ‚Ρ‹ для nginx

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ».

Π’ΠΎΡ‚ вСсь скрипт Dockerfile Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ:

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с Dockerfile создайтС Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ хоста ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«defaultΒ», Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ supervisord Β«supervisord.confΒ» ΠΈ скрипт ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ сСрвисов Β«start.shΒ».

Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ Π² Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ хоста ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Supervisord:

Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

ΠžΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» start.sh.

Π’ΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΈ Π·Π°ΠΊΡ€ΠΎΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ».

ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ chmod сдСлайтС Ρ„Π°ΠΉΠ» start.sh исполняСмым:

ARG ΠΏΡ€ΠΎΡ‚ΠΈΠ² ENV

1) ΠšΡ€Π°Ρ‚ΠΊΠΎΠ΅ пояснСниС:
ARG доступСн Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ врСмя сборки ΠΎΠ±Ρ€Π°Π·Π° Docker (RUN ΠΈ Ρ‚. Π΄.), Π½ΠΎ Π½Π΅ послС создания ΠΎΠ±Ρ€Π°Π·Π° ΠΈ запуска ΠΈΠ· Π½Π΅Π³ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² (ENTRYPOINT, CMD).

Для ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ² доступны значСния ENV , Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π² стилС RUN Π²ΠΎ врСмя сборки Docker, начиная со строки, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΎΠ½ΠΈ Π²Π²Π΅Π΄Π΅Π½Ρ‹. Если Π²Ρ‹ установитС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ срСды Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½ΠΎΠΌ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ bash (RUN export VARI = 5 &&…), ΠΎΠ½Π° Π½Π΅ сохранится Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Π΅.

2) Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ объяснСниС:
ARG Ρ‚Π°ΠΊΠΆΠ΅ извСстны ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ сборки. Они доступны Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° «объявлСния» Π² Dockerfile с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструкции ARG Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° создания ΠΎΠ±Ρ€Π°Π·Π°. Π—Π°ΠΏΡƒΡ‰Π΅Π½Π½Ρ‹Π΅ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹ Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ значСниям ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ARG. Π­Ρ‚ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ относится ΠΊ инструкциям CMD ΠΈ ENTRYPOINT, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ просто говорят, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. Если Π²Ρ‹ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚Π΅ Dockerfile ΠΎΠΆΠΈΠ΄Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ARG (Π±Π΅Π· значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ), Π½ΠΎ ΠΏΡ€ΠΈ запускС ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ сборки ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ прСдоставлСны, появится сообщСниС ΠΎΠ± ошибкС.

Однако значСния ARG ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ послС создания ΠΎΠ±Ρ€Π°Π·Π°, просмотрСв ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ Docker для ΠΎΠ±Ρ€Π°Π·Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΎΠ½ΠΈ Π½Π΅ подходят для ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ENV Ρ‚Π°ΠΊΠΆΠ΅ доступны Π²ΠΎ врСмя сборки, ΠΊΠ°ΠΊ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ Π²Π²ΠΎΠ΄ΠΈΡ‚Π΅ ΠΈΡ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструкции ENV. Однако, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ ARG, ΠΎΠ½ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ доступны ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ², запускаСмых ΠΈΠ· Ρ„ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π°. ЗначСния ENV ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ запускС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎΠ± этом Π½ΠΈΠΆΠ΅.

Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ Ρ‚Π°ΠΊ ΠΆΠ΅:
ЦСмСнтная стяТка ΠΏΠΎΠ΄ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ

3) Π‘ Π΄ΠΈΠ°Π³Ρ€Π΅ΠΌΠΎΠΌ:
Π’ΠΎΡ‚ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½Ρ‹ΠΉ ΠΎΠ±Π·ΠΎΡ€ возмоТностСй ARG ΠΈ ENV Π² процСссС создания ΠΎΠ±Ρ€Π°Π·Π° Docker ΠΈΠ· Ρ„Π°ΠΉΠ»Π° Docker ΠΈ запуска ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

Они ΠΏΠ΅Ρ€Π΅ΠΊΡ€Ρ‹Π²Π°ΡŽΡ‚ΡΡ, Π½ΠΎ ARG нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ·Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ΠΎΠ².

ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ заболСвания ΠΈ Ρ‚Ρ€Π°Π²ΠΌΡ‹

ΠŸΡ€ΠΎΡ„Π΅ΡΡΠΈΡ Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠ° сопряТСна с постоянной ΠΌΡ‹ΡˆΠ΅Ρ‡Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ² часты тяТСлыС психологичСскиС Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ, всСвозмоТныС Ρ‚Ρ€Π°Π²ΠΌΡ‹. НСобходимоС рСгулярноС ΠΏΠΈΡ‚Π°Π½ΠΈΠ΅, Π΅ΠΆΠ΅Π³ΠΎΠ΄Π½Ρ‹ΠΉ отпуск, ΠΈ мСдицинский ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒ Π² Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ стСпСни ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΠ΅ Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ². ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ риски для Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ:

  • ΠŸΡ€ΠΎΡΡ‚ΡƒΠ΄Ρ‹ ΠΈ обмороТСния.
  • Π‘ΠΎΠ»Π΅Π·Π½ΠΈ суставов.
  • РастяТСния ΠΌΡ‹ΡˆΡ† ΠΈ сухоТилий.
  • Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ остроты зрСния Π² слСдствиС Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ.
  • Π’Ρ€Π°Π²ΠΌΡ‹ ΠΊΠΎΠΆΠΈ.
  • Алкоголизм (ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ Π² ΠΏΠΎΠ·Π΄Π½Π΅ΠΉ стадии Ρ‚Ρ€ΡƒΠ΄ΠΎΠ²ΠΎΠ³ΠΎ стаТа).
  • Π‘Π½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΠΎΠ²ΠΎΠ³ΠΎ влСчСния.
  • ΠžΡΡ‚Π΅ΠΎΡ…ΠΎΠ½Π΄Ρ€ΠΎΠ·Ρ‹, Ρ€Π°Π΄ΠΈΠΊΡƒΠ»ΠΈΡ‚Ρ‹, Π³Ρ€Ρ‹ΠΆΠΈ ΠΌΠ΅ΠΆΠΏΠΎΠ·Π²ΠΎΠ½ΠΎΡ‡Π½Ρ‹Ρ… дисков, компрСссионныС ΠΏΠ΅Ρ€Π΅Π»ΠΎΠΌΡ‹ ΠΏΠΎΠ·Π²ΠΎΠ½ΠΎΡ‡Π½ΠΈΠΊΠ°

ИспользованиС диска Ρ‚ΠΎΠΌΠ°ΠΌΠΈ

Π’ΠΎΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для хранСния Π΄Π°Π½Π½Ρ‹Ρ… Π²Π½Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. НапримСр, ΠΊΠΎΠ³Π΄Π° ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ запускаСт ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с сохранСниСм состояния, Π΄Π°Π½Π½Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒΡΡ Π·Π° Π΅Π³ΠΎ ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ ΠΈ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΡ‚ Π΅Π³ΠΎ ΠΆΠΈΠ·Π½Π΅Π½Π½ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°. Π’ΠΎΠΌΠ° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠΎΡ‚ΠΎΠΌΡƒ, Ρ‡Ρ‚ΠΎ тяТСлыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π° ΠΏΠ»ΠΎΡ…ΠΎ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Допустим, ΠΌΡ‹ запускаСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π½Π° основС MongoDB, Π° Π·Π°Ρ‚Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΅Π³ΠΎ для тСстирования бэкапа, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ сдСлали Ρ€Π°Π½Π΅Π΅ (ΠΎΠ½ доступСн локально Π² Ρ„Π°ΠΉΠ»Π΅ bck.json):

Π”Π°Π½Π½Ρ‹Π΅ Π² Ρ„Π°ΠΉΠ»Π΅ бэкапа Π±ΡƒΠ΄ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½Π° хостС Π² ΠΏΠ°ΠΏΠΊΠ΅ /var/lib/docker/volumes . ΠŸΠΎΡ‡Π΅ΠΌΡƒ эти Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ Π² слоС ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°? ΠŸΡ€ΠΈΡ‡ΠΈΠ½Π° Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Dockerfile ΠΎΠ±Ρ€Π°Π·Π° mongo располоТСниС /data/db (Π³Π΄Π΅ mongo Ρ…Ρ€Π°Π½ΠΈΡ‚ свои Π΄Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ) опрСдСляСтся ΠΊΠ°ΠΊ Ρ‚ΠΎΠΌ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΎΠ±Ρ€Π°Π·Ρ‹, часто связанныС с прилоТСниями с сохранСниСм состояния, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ‚ΠΎΠΌΠ° для управлСния Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π·Π° ΠΏΡ€Π΅Π΄Π΅Π»Π°ΠΌΠΈ слоя ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°.

ΠžΠΊΠΎΠ½Ρ‡ΠΈΠ² тСстированиС бэкапа, ΠΌΡ‹ останавливаСм ΠΈΠ»ΠΈ удаляСм ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€. Однако Ρ‚ΠΎΠΌ Π½Π΅ удаляСтся, Ссли ΠΌΡ‹ Π½Π΅ сдСлаСм этого явно β€” ΠΎΠ½ остаСтся, потрСбляя дисковоС пространство. Π’ΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΉΡ‚ΠΈ Π΄ΠΎΠ»Π³ΠΈΠΌ ΠΏΡƒΡ‚Π΅ΠΌ:

Или ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ prune :

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ΅ соглашСниС «О-большоС» описываСт ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Π·Π½Π°Ρ‚ΡŒ насколько быстро ΠΈΠ»ΠΈ ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹. ВрСмя выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ расти с Ρ€Π°Π·Π½ΠΎΠΉ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒΡŽ. НапримСр ΠΏΡ€ΠΈ поискС элСмСнтов. Допустим ΠΎΠ΄ΠΈΠ½ шаг, ΠΎΠ΄Π½Π° итСрация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° выполняСтся 1мс. Π—Π½Π°Ρ‡ΠΈΡ‚ ΠΏΡ€ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ 100 элСмСнтов врСмя выполнСния Π±ΡƒΠ΄Π΅Ρ‚ 100мс. Для Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠ³ΠΎ поиска, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π°ΠΉΡ‚ΠΈ

голоса
Π Π΅ΠΉΡ‚ΠΈΠ½Π³ ΡΡ‚Π°Ρ‚ΡŒΠΈ
Бсылка Π½Π° ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ
Adblock
detector