SlideShare une entreprise Scribd logo
1  sur  15
Télécharger pour lire hors ligne
Jan Drábek
jan.drabek@kiwi.com
Péhápkaři/Github: repli2dev
Jak
na více
souběžných
Docker kompozic na lokále
version: "3.6"
services:
client:
image: nginx
ports:
- 80:80
volumes:
- ./:/usr/share/nginx/html
Když objevíte docker compose
❤🎉🚀
Když chcete udělat pustit druhý projekt
Bind for 0.0.0.0:80 failed: port is already allocated
😢
Co s tím?
1. Stop & Run
● $ cd project1
$ docker compose stop
$ cd project2
$ docker compose up
● Únavné
● Nefunguje když potřebujete oba projekty zároveň
2. Port remapping
● project1/docker-compose.yaml:
- 80:80
● project2/docker-compose.yaml:
- 81:80
● Únavné, náročné na paměť programátora
● Drbačka s https (https://localhost:444 WTF)
● Problémy s kanonizací adresy ve frameworcích.
● Funguje když potřebujete zintegrovat více projektů napříč.
3. Nginx jako reverzní proxy
● project1/docker-compose.yaml:
- 80:80
● project2/docker-compose.yaml:
- 81:80
● Nginx:
project1.test -> proxy localhost:80
project2.test -> proxy localhost:81
● Náročné na čas nastavení a konfigurace, lokální nginx nebo další Docker
kompozice.
● Funguje když potřebujete zintegrovat více projektů napříč.
● Lepší doménové jméno, URL bližší produkčnímu typicky.
4. Bindování na konkrétní IP adresy
● project1/docker-compose.yaml:
- 127.0.0.30:80:80
● project2/docker-compose.yaml:
- 127.0.0.31:80:80
● /etc/hosts
project1.test -> 127.0.0.30
project2.test -> 127.0.0.31
● Zdlouhavé nastavení, ale vše lze řešit přes systém (žádný nginx s proxy).
● Funguje když potřebujete zintegrovat více projektů napříč.
● Lepší doménové jméno, URL bližší produkčnímu typicky.
Loopbind
1. Instalace loopbindu
● composer global require kiwicom/loopbind
● https://github.com/kiwicom/loopbind/
2. Úvodní nastavení
● $ loopbind init
> IPv4 address from local block:
> 127.0.0.30
> Hostname (leave empty to continue):
> project2.test
> Hostname (leave empty to continue):
>
3. Úvodní nastavení - kontrola
● {
"localIPAlias": "127.0.0.30",
"hostname": [
"project2.test"
]
}
4. Profit
● loopbind apply
● loopbind unapply
5. Fíčury
● 1-N doménových jmen
● Linux a OS X podpora out-of-box - Windows 🤷
● Idempotentní spouštění
Jak na více Docker kompozic na lokále | Jan Drábek | 15. 2. 2023 – Kiwi.com

Contenu connexe

Similaire à Jak na více Docker kompozic na lokále | Jan Drábek | 15. 2. 2023 – Kiwi.com

Similaire à Jak na více Docker kompozic na lokále | Jan Drábek | 15. 2. 2023 – Kiwi.com (15)

Nástěnka 02
Nástěnka 02Nástěnka 02
Nástěnka 02
 
Node-RED
Node-REDNode-RED
Node-RED
 
HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021
HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021
HCL Sametime Meetings on Docker - SUTOL Cafe 2/2021
 
Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?Hacknutý Drupal web. A co teď?
Hacknutý Drupal web. A co teď?
 
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
Continuous integration pro Symfony/PHP aplikaci s Dockerem v GitLabu [CZ]
 
Představení Drupalu 8
Představení Drupalu 8Představení Drupalu 8
Představení Drupalu 8
 
Workshop 2018 11-30 - Představení drupalu 8
Workshop 2018 11-30 - Představení drupalu 8Workshop 2018 11-30 - Představení drupalu 8
Workshop 2018 11-30 - Představení drupalu 8
 
WordCamp Bratislava 2017 - Martin Hlaváč
WordCamp Bratislava 2017 - Martin HlaváčWordCamp Bratislava 2017 - Martin Hlaváč
WordCamp Bratislava 2017 - Martin Hlaváč
 
Composer / Posobota
Composer / PosobotaComposer / Posobota
Composer / Posobota
 
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOSPavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
Pavel Cvetler: Jeden kód, co vládne všem? Žádný problém pro Android i iOS
 
Péhápkaři v Pecce: Jak si lokálně spustit Travis CI Build – Jakub Englický – ...
Péhápkaři v Pecce: Jak si lokálně spustit Travis CI Build – Jakub Englický – ...Péhápkaři v Pecce: Jak si lokálně spustit Travis CI Build – Jakub Englický – ...
Péhápkaři v Pecce: Jak si lokálně spustit Travis CI Build – Jakub Englický – ...
 
OpenStack Czech User Group Meetup
OpenStack Czech User Group Meetup OpenStack Czech User Group Meetup
OpenStack Czech User Group Meetup
 
Péhápkaři v Pecce: Sbohem PeckaCI, vítej Github Actions – Jakub Englický –27....
Péhápkaři v Pecce: Sbohem PeckaCI, vítej Github Actions – Jakub Englický –27....Péhápkaři v Pecce: Sbohem PeckaCI, vítej Github Actions – Jakub Englický –27....
Péhápkaři v Pecce: Sbohem PeckaCI, vítej Github Actions – Jakub Englický –27....
 
HCL Sametime V11 instalace - tipy
HCL Sametime V11  instalace - tipyHCL Sametime V11  instalace - tipy
HCL Sametime V11 instalace - tipy
 
Trendy a nové možnosti test automation
Trendy a nové možnosti test automationTrendy a nové možnosti test automation
Trendy a nové možnosti test automation
 

Plus de WebScience1

Plus de WebScience1 (7)

The Clone Wars: Spoutání Síly PHP a Nextras ORM | Jakub Fatrdla | 19. 4. 2023...
The Clone Wars: Spoutání Síly PHP a Nextras ORM | Jakub Fatrdla | 19. 4. 2023...The Clone Wars: Spoutání Síly PHP a Nextras ORM | Jakub Fatrdla | 19. 4. 2023...
The Clone Wars: Spoutání Síly PHP a Nextras ORM | Jakub Fatrdla | 19. 4. 2023...
 
Kompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZ
Kompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZKompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZ
Kompletní průvodce obrázky | Tomáš Krejčí | 19. 4. 2023 – SUPERKODERS.CZ
 
Rust jako náhrada C pro vývoj PHP extensions?
Rust jako náhrada C pro vývoj PHP extensions?Rust jako náhrada C pro vývoj PHP extensions?
Rust jako náhrada C pro vývoj PHP extensions?
 
Jak jsme překládali pomocí Symfony/Messenger
Jak jsme překládali pomocí Symfony/MessengerJak jsme překládali pomocí Symfony/Messenger
Jak jsme překládali pomocí Symfony/Messenger
 
Framework X jako API
Framework X jako APIFramework X jako API
Framework X jako API
 
Jak neopakovat kód, ale nepo**** abstrakci | Jiří Pudil | 15. 2. 2023 – Kiwi.com
Jak neopakovat kód, ale nepo**** abstrakci | Jiří Pudil | 15. 2. 2023 – Kiwi.comJak neopakovat kód, ale nepo**** abstrakci | Jiří Pudil | 15. 2. 2023 – Kiwi.com
Jak neopakovat kód, ale nepo**** abstrakci | Jiří Pudil | 15. 2. 2023 – Kiwi.com
 
RabbitMQ v PHP webových aplikacích | Adam Král | 15. 2. 2023 – Kiwi.com
RabbitMQ v PHP webových aplikacích | Adam Král | 15. 2. 2023 – Kiwi.comRabbitMQ v PHP webových aplikacích | Adam Král | 15. 2. 2023 – Kiwi.com
RabbitMQ v PHP webových aplikacích | Adam Král | 15. 2. 2023 – Kiwi.com
 

Jak na více Docker kompozic na lokále | Jan Drábek | 15. 2. 2023 – Kiwi.com

  • 1. Jan Drábek jan.drabek@kiwi.com Péhápkaři/Github: repli2dev Jak na více souběžných Docker kompozic na lokále
  • 2. version: "3.6" services: client: image: nginx ports: - 80:80 volumes: - ./:/usr/share/nginx/html Když objevíte docker compose ❤🎉🚀
  • 3. Když chcete udělat pustit druhý projekt Bind for 0.0.0.0:80 failed: port is already allocated 😢
  • 5. 1. Stop & Run ● $ cd project1 $ docker compose stop $ cd project2 $ docker compose up ● Únavné ● Nefunguje když potřebujete oba projekty zároveň
  • 6. 2. Port remapping ● project1/docker-compose.yaml: - 80:80 ● project2/docker-compose.yaml: - 81:80 ● Únavné, náročné na paměť programátora ● Drbačka s https (https://localhost:444 WTF) ● Problémy s kanonizací adresy ve frameworcích. ● Funguje když potřebujete zintegrovat více projektů napříč.
  • 7. 3. Nginx jako reverzní proxy ● project1/docker-compose.yaml: - 80:80 ● project2/docker-compose.yaml: - 81:80 ● Nginx: project1.test -> proxy localhost:80 project2.test -> proxy localhost:81 ● Náročné na čas nastavení a konfigurace, lokální nginx nebo další Docker kompozice. ● Funguje když potřebujete zintegrovat více projektů napříč. ● Lepší doménové jméno, URL bližší produkčnímu typicky.
  • 8. 4. Bindování na konkrétní IP adresy ● project1/docker-compose.yaml: - 127.0.0.30:80:80 ● project2/docker-compose.yaml: - 127.0.0.31:80:80 ● /etc/hosts project1.test -> 127.0.0.30 project2.test -> 127.0.0.31 ● Zdlouhavé nastavení, ale vše lze řešit přes systém (žádný nginx s proxy). ● Funguje když potřebujete zintegrovat více projektů napříč. ● Lepší doménové jméno, URL bližší produkčnímu typicky.
  • 10. 1. Instalace loopbindu ● composer global require kiwicom/loopbind ● https://github.com/kiwicom/loopbind/
  • 11. 2. Úvodní nastavení ● $ loopbind init > IPv4 address from local block: > 127.0.0.30 > Hostname (leave empty to continue): > project2.test > Hostname (leave empty to continue): >
  • 12. 3. Úvodní nastavení - kontrola ● { "localIPAlias": "127.0.0.30", "hostname": [ "project2.test" ] }
  • 13. 4. Profit ● loopbind apply ● loopbind unapply
  • 14. 5. Fíčury ● 1-N doménových jmen ● Linux a OS X podpora out-of-box - Windows 🤷 ● Idempotentní spouštění