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 {} \;
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
Przykładowe ściągnięcie obrazu getting-started, uruchomienie konternera i wrzucenie obrazu do docker huba:
# docker run --name repo alpine/git clone https://github.com/docker/getting-started.git # docker cp repo:/git/getting-started . # cd getting-started # docker run -d -p 80:80 --name docker-tutorial docker101tutorial # docker tag docker101tutorial jornathanx/docker101tutorial # docker push jornathanx/docker101tutorial
# redis-cli
# redis-cli FLUSHALL - czyści bazę redis
> EXIT - wyjście z programu
> help $string - lub: @hash, @list, @set
> help $sorted_set
Zbiór zapewnia stały czas przetwarzania elementów. Czytaj dalej Redis – Set (zbiór)
127.0.0.1:6379> help @list
HSET, HGET, HGETALL, HEXISTS, HDEL
> HSET profil.1 name Frank - kropka traktowana jest jak każdy inny znak > HSET profil.1 login johnny
Czytaj dalej Redis – Hash – tablice asocjacyjne – obiekty płaskie (JS)
# redis-cli
> KEYS * - wszystkie klucze (musi być argument) > EXIT - wyjście z programu
Główny plik konfiguracyjny
# nano /etc/redis/redis.conf bind 127.0.0.1 - tylko localhost # By default, if no "bind" configuration directive is specified, Redis listens # for connections from all the network interfaces available on the server. # It is possible to listen to just one or multiple selected interfaces using # the "bind" configuration directive, followed by one or more IP addresses.
# apt install redis-server
Podczas aktualizacji pojawia się błąd:
Błąd:4 https://packages.sury.org/php stretch InRelease Następujące podpisy były błędne: EXPKEYSIG B188E2B695BD4743 DEB.SURY.ORG Automatic Signing Key <deb@sury.org>
Instalacja modułu
Odpytanie o nagłówki (-I headers only)
# curl -I https://i.imgur.com/z4d4kWk.jpg HTTP/1.1 200 OK ... Accept-Ranges: bytes Content-Length: 146515
https://curl.se/docs/manual.html – przykłady
https://curl.se/docs/manpage.html – manual
Nagrody
brave://rewards
HSTS
chrome://net-internals/#hsts
Komunikaty przenoszone między wywołaniami przez req.session.flash – dostępne w widokach poprzez res.local.flash
Obsługa sesji
const VALID_EMAIL_REGEX = new RegExp('^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$')
if( VALID_EMAIL_REGEX.test(email) ) { ... }
Hasła robocze – .credentials.development.js
exports.credentials = { cookieSecret : "9to mmóje hasło developerskie" }