AppController
$this->loadComponent('RequestHandler');
czytanie
// /subdir/articles/edit/1?page=1 $here = $request->getRequestTarget(); $uri = $request->getUri(); $path = $uri->getPath(); $query = $uri->getQuery(); $host = $uri->getHost();
$session = $this->request->getSession()->read('Auth.User.name');
Interfejs controller’a – input name=’attachment’
AppController + RequestHandlerComponent
Argumenty wywołania programu:
Rozpakowanie szablonu:
W katalogu projektu (project/webroot) utwórz plik konfiguracyjny
https://sass-lang.com/ - strona główna sass https://sass-lang.com/install - Dart sass - command line https://github.com/sass/sassc-ruby#readme - gem, plugin, do framewroków
blokowanie zmiany usera przez modyfikację formularza
// metoda edit() $this->Articles->patchEntity($article, $this->request->getData(), [ 'accessibleFields' => ['user_id' => false] ]);
Zdefiniowanie zalogowanego usera dla całego kontrolera
public function initialize() : void
{
parent::initialize();
$user_id = $this->request->getAttribute('identity')->getIdentifier();
}
// Parametry logowania zalogowanego użytkownika $email = $this->Authentication->getIdentity()->get('email'); $user_id = $this->Authentication->getIdentity()->get('id'); $user_id = $this->Authentication->getIdentifier(); $user_id = $this->request->getAttribute('identity')->getIdentifier();
Domyślne sterowniki: bridge, host, null, overlay Czytaj dalej Docker – Network
Działająca instancja obrazu nazywana jest kontenerem. Obraz tylko do odczytu otrzymuje na samej górze warstwę do odczytu-zapisu, inicjuje porty sieciowe, limity, identyfikator i inne ustawienia potrzebne do działania.
Czytaj dalej Docker – kontenery
Dokumentacja online: https://docs.docker.com/
Składnia – gdy jest już gotowy Dockerfile
# docker build [OPCJE] <ŚCIEŻKA lub ADRES URL> | - - ścieżka lub URL - określa kontekst, położenie plików - COPY, ADD, ... szukają plików w kontekście budowania - ścieżka określa wszystkie podkatalogi, - . (kropka) bieżący katalog z plikiem Dockerfile - URL - repozytorium git z wszystkimi podmodułami - cały kontekst jest wysyłany do demona budowania # docker build -help
STOPSIGNAL – określa jaki sygnał wywołania systemowego powinien zostać wysłany do kontenera w celu zakończenia go Czytaj dalej Dockerfile – STOPSIGNAL, HEALTHCHECK, SHELL
ARG – przekazuje Dockerowi argument – do polecenia docker build
VOLUME – tworzy punkt podłączenia danych kontenera. Wolumen to stronie kontenera podajemy jawnie, wolumen po stronie hosta może być podany jawnie lub będzie mapowany automatycznie na katalog w strukturze katalogów dockera Czytaj dalej Dockerfile – VOLUME, WORKDIR
Uprawnienia – rekurencyjnie
# chmod -R 755 /var/www/html # chmod -R u=rwx,go=rx /var/www/html
# find /var/www/html -type d -exec chmod 755 {} \;
# find /var/www/html -type f -exec chmod 644 {} \;
Informuje że kontener nasłuchuje na określonych portach sieciowych – docker zezwala na przychodzący ruch sieciowy do kontenera z innych kontenerów tego hosta. Nie udostępnia automatycznie hostowi portów kontenera.
EXPOSE 80 EXPOSE 443 docker run --expose 80 ... docker run --expose 443 ...
LABEL – dodaje informacje opisowe (metadane) do obrazu. Etykiety są addytywne. Te same klucze nadpisują wartości. Czytaj dalej Dockerfile – LABEL, ENV
W Dockerfile powinna znaleźć się instrukcja ENTRYPOINT i/lub CMD. Najczęstszy scenariusz:
CMD – Polecenie i parametry startowe kontenera, lub parametry do ENTRYPOINT
Czytaj dalej Dockerfile – CMD, ENTRYPOINT
Dockerfile – plik tekstowy, bez rozszerzenia w katalogu głównym projektu. Dodajemy do repozytorium git. Buduje nowy obraz w oparciu o obraz bazowy.
- # to jest komentarz - instrukcje piszemy WIELKIMI LITERAMI (mimo iż Docker nie rozróżnia wielkości liter) - każda instrukcja tworzy nową warstwę - należy scalać wiele instrukcji w jedną (o ile to możliwe) - ważna jest kolejność - w tej kolejności będą tworzone warstwy - ostatnie instrukcje to CMD, ENTRYPOINT
Mapowanie wolumenu hosta na kontener – dostęp z poziomu kontenera i hosta
# docker run -v /host_dir/:kontener_dir # docker run -it -v /home/john/wwwdir/:/data ubuntu # docker volume ls - sprawdzenie nazwy
Udostępnienie portów
EXPOSE (Dockerfile) - udostępnione porty są otwarte dla innych kontenerów --expose - tryb wykonawczy docker run - możliwy zakres portów. Nie mapuje portów hosta. # docker run --expose=1000-200 ... -p - jawne mapowanie portów z hostem (tryb wykonawczy) np. # docker run -p 7000-8000:7000-8000 ... # docker run --name nginx -d -p 8080:80 nginx # docker run --name nginx -d -p 8080:80 -p 443:443 nginx -P - mapowanie dynamiczne - proty hosta wybrane losowo dla każdego portu w EXPOSE lub --expose # docker run --name nginx -d -P nginx
Uruchomienie kontenera w trybie interaktywnym – katalog projektu pusty Czytaj dalej Komendy dockera
# apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
# curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg