• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    ALMADDocker a kontejnery
    TRILOBYTE
    TRILOBYTE --- ---
    DWICH: neslo by mit ten konfigurak na pripojenym volume?
    DWICH
    DWICH --- ---
    Ahoj, mám dotaz. Mám jednoduchej docker image, kde je nginx, kterej servíruje jednu statickou HTML stránku. Ten docker image provozuju přes kubernetes. Aby nebyla přístupná, je vyžadována základní HTTP autentikace (htpasswd), což je nastaveno v nginx confu.

    Jak byste řešili, že ta stránka (nginx) má mít zapnutou autentikaci jen v testovacím prostředí a nemá mít zapnutou autentikaci v produkčním? Ten docker bych ideálně chtěl buildnout jen jednou, ať nebuilduju dva rozdílný. Z toho mi vychází, že by někde měl být "přepínač" a podle toho zvolit nginx conf. Jak byste to v praxi udělali? Díky za názory.
    REFLEX
    REFLEX --- ---
    Ahoj,

    1)
    nemate nejaky pouzitelny docker compose na stack

    nuxt (vue) - front
    symfony - api a backoffice (admin)
    mysql
    cele asi pred to dat nginx jako proxy a mozna traefik

    protoze /api a /admin bude zabrane pro php a zbytek by mel obsluhovat nuxt

    2)
    Kde u nas hostujete docker na produkci? Mam na to vzit nejaky VPS?
    SUK
    SUK --- ---
    QUOING: To je, zda se, presne to, co hledam :) Jen jsem se nezvladl spravne zeptat googlu :) Diky!
    SUK
    SUK --- ---
    MARTEN: No, kompiluju strasne malinkej pluginek pro postgres. Coz ale znamena obrovsky zvetseni image kvuli toolchainu na zkompilovani - ted na to koukam - 170 radku C kodu. Externi kompilace ma zase tu nevyhodu v tom, ze je nutne udrzovat identickou verzi, aby se to vubec dokazalo spravne slinkovat.
    QUOING
    QUOING --- ---
    SUK: Muzes pouzit multi-stage builds: https://docs.docker.com/develop/develop-images/multistage-build/#use-multi-stage-builds

    V prvni fazi vybuildis co potrebujes (treba make; make install) a pak v druhe fazi udelas druhy image, ktery okopiruje binary a lib-ky z toho prvniho image.

    Vyhody jsou maly image s minimem layeru bez nainstalovanych build tools.
    MARTEN
    MARTEN --- ---
    SUK: nejlepe zkompilovat a pak dat do image. takhle i funguje s2i v openshift. moznost je i dat zdrojaky do image, tam zkompilovat a smazat zdrojaky. ale layery jsou pak zbytecne velke plus v hostorii se daji najit i ty zdrojaky. ale je to lehci ze to compiluke stejna verze jako na ktere to pobezi. moznosti je trochu vic, ale je to trochu vic radku. tak zalezi co vse potrebujes a co se compiluje.
    SUK
    SUK --- ---
    Cus, jakym zpusobem resite build imagu/kontejneru, do kterych potrebujete neco maleho zkompilovat?
    REFLEX
    REFLEX --- ---
    MARTEN: ten bash script je dobry napad, to urcite pouziju, furt uvazuju ze jsem na windows, ale on se vlastne pousti v tom containeru :]
    MARTEN
    MARTEN --- ---
    REFLEX: Pro tohle musis menit CMD, ten se provede az po mountnuti volume. Muzes mit pak docker-compose pro dev a pro prod, nebo muzes extendovat, pripadne ridit pres env. Do docker-compose pridej neco takoveho, nebo cokoliv dalsiho:
    front:
      command: bash -c "yarn install && yarn start"
    

    Muzes si udelat i docker-compose.dev.yml, kde bude jen tenhle command a pak to spoustet docker-compose -f docker-compose.yml -f docker-compose.dev.yml up, ale za mne to neni uplne hezke.
    Radsi bych udelal bash script, ktery bude v CMD. V tom souboru budes mit if DEBUG == 1 nebo neco jineho, pak staci zapnout tohle dev (DEBUG == 1) pomoci DEBUG=1 docker-compose up.

    Jinak tenhle image bude docela dost velkej. Prvne by si mel kopirovat pouze package.json a lock soubor. Spustit install a pak nakopirovat zbytek, layery pak budou mensi. Stejne tak ENV a HOST dej na zacatek, run staci jen jeden, delej to jako tri commandy, ale pomoci &&.
    KING
    KING --- ---
    REFLEX: to co chces imho neni v docker compose, ale spis multi stage build Docker image - https://medium.com/capital-one-tech/multi-stage-builds-and-dockerfile-b5866d9e2f84
    REFLEX
    REFLEX --- ---
    Chtel bych pres docker compose

    1) buildil pro dev prostredi
    2) buildil pro produkci

    docker-compose.yml
    
    version: '3'
    
    services:
      front:
        build:
          context: ./front
        working_dir: /app
        command: yarn dev
        ports:
          - "3000:3000"
        volumes:
          -  ./front/:/app
    


    Dockerfile v front/
    
    FROM node:14.0.0-alpine3.11
    
    # Create app directory
    WORKDIR /app
    ADD . /app/
    
    # global install & update
    RUN yarn install
    
    RUN rm yarn.lock
    RUN yarn build
    
    ENV HOST 0.0.0.0
    EXPOSE 3000
    
    # start command
    CMD [ "yarn", "start" ]
    


    S dockerem jsem zacal dnes tak to asi neni uplne ok.

    Na devu potrebuju napojit /front/ na /app/ (tady jsem zjistil ze mountovani volumu je az po buildu takze vlastne nejde ten yarn install) - aby fungoval reloas pri upravach

    Na prod bude pouze COPY

    Jde to vyresit jednim docker-compose nebo mam pro kazde prostredi udelat zvlast?
    SH_PANDA
    SH_PANDA --- ---
    Kdyby nekdo mel zajem, tak hledame k nam nekoho na OpenShift Ops v DevOps ;) Na kratko = projekt na kontrakt i na dlouho (kontrakt nebo HPP). Praha nebo Ostrava. Pracovni doba hodne flexibilni. Jak moc to muze byt remote zalezi na duvere vedeni. Nasho dlouholetyho admina jsem videl asi tak 6x za rok, z toho 3x na team buildingu. Kdyztak posta.
    JON
    JON --- ---
    INDIAN: Mluvim spis o tom testovani - ze to bud budu testovat na docker kontejnerech coz ma svoje problemy, nebo budu muset vymyslet jak to testovat na virtualech, ale tam to neni tak dobre integrovane do toho CI (nebo aspon nevim o tom, ze by slo nejak snadno startovat VM z CI, mozna blbe hledam).
    INDIAN
    INDIAN --- ---
    JON: v cem myslis ze by gitlab CI mel delat vic? ja sem s nim docela spojenej - pouzivam ho treba docasne na provisioning bare metal serveru kterej neni uplne trivialni - nastaveni idrac + pripojeni spec. vytvorenyho ISO, deaktivace port-channel na 2 switchich, vlastni instalace systemu, nastaveni teamingu a opet nastaveni port-channels a zbejvajici provisioning.
    Jednoduchej .gitlab-ci.yml s vyhrazenym runnerem s pristupem do produkcni site, s kontejnerem s ansible (tahanej z registry) a vsechny playbooky sou v projektu, klice a hesla v secrets...
    z moji strany mu neni co vytknout z hlediska deploymentu...
    JON
    JON --- ---
    INDIAN: hezky. Ja si taky dovedu predstavit testovani tech ansiblich roli a playbooku na VM, ale museli bychom to nejak dodelat do gitlab CI, a to mi prijde jednodussi trochu si k tomu ucelu poohnout dockeri kontejnery, ale ma to sva uskali, no.
    INDIAN
    INDIAN --- ---
    JON: tehlech nesvaru sem si davno samo vedom, s kontejnerama pracuju denne.

    FYI (tl;dr) jedna se o platformu na simulaci/validaci konfiguraci sitovejch prvku od Arista... dodavaj komplexni lab na bootsraping a spravu konfiguraci jejich devices v podobe virtualnich masin, ktery je simulujou a lze tak si s tim hrat nez se to nacpe do fyzickejch switchu v produkci
    Prave ze nativne pouzivaj VM a ve veskerych prezentacich nam cpali pouze VM. O kontejnerech se vubec nezminovali, ja si mezitim nasel ze si s nima zacli hrat konecne taky, ovsem ofiko dokumentace (krom moznosti si stahnout image) nic extra nesdeluje (jen par blogu).
    Nastesti frajer od nich co ma nas na starosti je ochotnej a sam je autorem nekolika utilit co se tyce provisioningu, takze mi poslal par odkazu na projekty jejich lidi na githubu, takze uz se mam ceho chytit...
    Problem je v tom ze v pripade VM inicializace probiha pres boot (tak jako u switchu pres ZTP)... Nicmene prakticky de jenom mu nacpat zakladni konfiguraci - coz lze samo jednoduse u kontejneru vyresit bud dodatecnym provisioningem pres CLI nebo si buildnout novej image.
    (nehrabal bych se v tom tak a udelal to klidne dle jejich ofiko doporuceni na VM, ale mam pred sebou migraci cca 20 datacenter s celkovym poctem 300 devices, tak bych to rad mel vic pruznejsi)
    JON
    JON --- ---
    INDIAN: hele, klidne naznac jaks to vyresil. Jinak pracovat s kontejnerama jako s VM je rozsirenej nesvar - napr me to nakopalo s rozbehem naposled v pondeli. Rovnou pridam popis a dotaz:

    Popis:
    Cca pred rokem, kdyz jsme si zavedli nejake deploye pomoci ansible jsem spachal "jednoduchej" setup na testovani ansible roli:
    - Nastartuje se kontejner "playbook" s ansible , rolema a playbookama
    - Nastartuje se kontejner "target" s bezicim ssh a cistym systemem
    1) v playbook kontejneru se pusti ansible s tim s cim ma
    2) pytestem se overi, ze to udelalo to co melo
    3) jedna z veci co se overuje je, ze se do "targetu" nainstaloval docker, a pomoci docker-compose tam jde neco spustit a posloucha a odpovida to na nejakym portu.

    Mozna jsem tu o tom uz mluvil, ale narazel jsem na kokotsky problemy s tim, jak do tech kontejneru dostat ssh klice (aniz by musely byt zapeceny v image) - kdyz jsem si je vyzobaval z ENV v bashi, tak se tam objevovaly zalomeni radku atd.. nakonec jsem to vyresil pythonim skriptem, ktery se pousti pri startu kontejneru a ten ty netisknutelny znaky zpracovava OK.

    Ted, cca po roce, jsem to rozvrtal v ramci prechodu na python3, a ejhle - docker in docker uz neni co bejval - pri mountovani volume z docker-compose to padalo, protoze overlay nemuze slouzit jako backing container pro overlay - coz jiste pred tim cca rokem jeste slo.

    Dotaz:
    Napada vas, jak tohle elegantne resit?
    Volumovat do "targetu" socket hostitelskyho dockeru (aby to nebylo DinD, ale side by side) mi neprijde OK, pac chci otestovat i to, ze se tam tim ansiblem nainstaluje, a navic bude pritomnost toho socketu vadit pri te instalaci, ne?
    Kliknutím sem můžete změnit nastavení reklam