Tento web používá soubory cookie. Dalším používáním webu s tímto souhlasíte.
jméno
heslo
přihlásit
zaregistrujte se
zapomněli jste heslo?
Docker a kontejnery
ALMAD
Docker aneb přístupný provoz kontejnerizovaných aplikací
Docker(Hub), Compose, Swarm, boot2docker, DevOps, LXC, ECS, TumTum a jiné buzzwordy
Bezpečnost v prostředí kontejnerů
Related: automatizace [ Centralizovaná správa stanic a ostatních prvků v síti konfigurace/inventarizace/instalace/aktualizace/zalohovani ]
Máte k tomu co říct? Vložte se do diskuze.
SYNTAX_TERROR --- 6:13:29 13.8.2019
???: Slouží to pro spouštění SQL scriptů, kterými se "updatuje" databáze.
Příklad:
- jako vývojář u sebe na lokálu upravim databázi, např. přidám tabulku.
- Vytvořim soubor např. patch-1.0.5.sql v určitym adresáři, do kterýho dám ty CREATE TABLE příkazy
- Tento adresář s migračními scripty je součástí repozitáře
- Na ostrých serverech se pak při spuštění kontejneru spustí ten můj migrační script. Ten mrkne, jestli existují nové soubory patch-*.sql, které ještě nespustil. Pokud ano, tak spustí a ostrou DB tak uvede do aktuálního stavu.

Jako vývojáři totiž nemáme do ostré DB přístup. Navíc ty soubory s SQL jsou verzovány, takže je vidět kdo co udělal (podělal:) a řeší to i konflikty.
??? --- 19:31:52 12.8.2019
SYNTAX_TERROR: Docela by me zajimalo co to vlastne dela, pac to zni jako zajimavej antipattern :D
No judging, nektery obskurni usecases proste jinak nejdou, jen me to zaujalo
SYNTAX_TERROR --- 14:50:42 12.8.2019
SYNTAX_TERROR:
A jen si tu odložim řešení, třeba se bude někomu (mě v budoucnu) hodit:

Dockerfile
COPY ./docker-php-entrypoint /usr/local/bin/
ENTRYPOINT ["docker-php-entrypoint"]
CMD ["apache2-foreground"] 

docker-php-entrypoint
 #!/bin/bash

set -e

# first arg is `-f` or `--some-option`
if [ "${1#-}" != "$1" ]; then
	set -- php "$@"
fi

echo "Executing DB migration"
php /var/www/html/bin/db-migration.php
echo "Executed DB migration"

exec "$@" 
SYNTAX_TERROR --- 14:49:11 12.8.2019
JON: jj, ale už to vyřešil devops kolega
JON --- 14:46:37 12.8.2019
SYNTAX_TERROR: a jses si jistej, ze tu migraci chces spustet pokazdy?
ADM --- 11:25:25 11.8.2019
SYNTAX_TERROR: tak to napis hned, ze chces aby bezel apache. pokud potrebujes spustit nejaky php skript, tak jedine nejdriv ten skript, a pak apache. pouzijes vlastni entrypoint neco jako:
ENTRYPOINT [ /bin/sh -c "php /svuj/skript && exec /puvobni/apache/entrypoint" ] (naformatuj si to spravne)

v kubernetes bys na to pouzil post-start hook
RUDOLF --- 11:21:54 11.8.2019
SYNTAX_TERROR: Takže jako pid 1 by měl běžet ten Apache, který servíruje to PHP. Srry víc nepomůžu, jsem na telefonu daleko od kompu.
SYNTAX_TERROR --- 10:32:13 11.8.2019
RUDOLF: no, nejsem v dockeru moc zběhlej, takže nevim co myslíš tím `proces_ktery_pobezi_s_pid1_a_servuje_tvoji_appku`.
Zkoušel jsem mj.:
CMD ["php", "/var/www/html/bin/db-migration.php"] && tail -f /dev/null 
Což radí internety, ale skončilo to stejně.

Zkusil jsem na konci zavolat ještě
CMD ["php", "/var/www/html/bin/alive.php"]
kde alive.php je nekonečný cyklus. To sice kontejner neukončí (cyklus běží), ale zase se nespustil ten první db-migrations.php a Apache servica zdá se vůbec není spuštěná.

Původní docker image je php:7.3.6-apache.
RUDOLF --- 10:04:42 11.8.2019
SYNTAX_TERROR: S PHP jsem nedělal roky ale vynechal bych entrypoint a do cmd bych narval php migracni_skrip && proces_ktery_pobezi_s_pid1_a_servuje_tvoji_appku
SYNTAX_TERROR --- 9:54:50 11.8.2019
Poradíte, jak po spuštění kontejneru spustit svůj php script?
Zkouším to takto:
ENTRYPOINT ["php"]
CMD ["/var/www/html/bin/db-migration.php"] 

Ale to po doběhnutí php scriptu se stopne celý kontejner. To nechci, potřebuju, aby po dokončení toho scriptu kontejner dál běžel.