MEGOLDVA! docker kezdo - mariadb --> docker-compose.yml | volumes.0 type is required

Fórumok

Sziasztok!

A forum temat nem biztos hogy sikerult eltalalnom, nem talaltam jobbat, bocsi...

Ismerkedem a docker-el. Egeszen a mai napig rendben is voltunk egymasnak, de most valahogy elfogytam. Szeretnek egy compose-t kesziteni mariadb-hez, de egyszeruen nem akar osszejonni.

Compose nelkul mukodik:

docker run --name gyore-net_db -v gyore-net_db:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=kurvatitkosjelszo -d  -e MARIADB_DATABASE=nextcloud_db -e MARIADB_USER=nextcloud_user -e MARIADB_PASSWORD=titkosjelszo mariadb:latest

Ezt szerettem volna atultetni compose formaba:

---

version: '2'

services:

   gyore-net_db:

       image: mariadb:latest

       container_name: gyore-net_db

       restart: always

       ports:

           - 10006:3306

       environment:

           MARIADB_ROOT_PASSWORD: kurvatitkosjelszo

           MARIADB_DATABASE: nextcloud_db

           MARIADB_USER: nextcloud_user

           MARIADB_PASSWORD: titkosjelszo

       volumes:

           - gyore-net_db: /var/lib/mysql

Namost, a docker-compose.yml file-t visual studio code-al reszelem, illetve a host-on a yamllint "yaml validatort is" mar vegso elkeseredesemre hasznalom. Azt tudom, hogy ez a szutyok nagyon erzekeny a szintax-ra. A lenyeg, hogy a volumes-el van gondja, de nem  tudom megfejteni hogy mi a baja:

 

docker compose up -d - parancsra az alabbi hibauzenet jon ( a container es a tarolo sem keszul el)

services.gyore-net_db.volumes.0 type is required

A mariadb hivatalos docker oldalan, nem ternek ki kulon erre a reszre, amikor volume-t szeretnel definialni. Amennnyiben elhagyom a volumes reszt, rendben lefut minden.

 

Amiket probaltam:

- kezzel letrehozom a compose futtatasa elott a tarolot: docker volume create - nincs valtozas

- https://8gwifi.org/dc1.jsp - mar kinomban itt keszitettem a docker run-bol, compose file-t, de az sem akar mukodni, illetve legeneraltattam itt a compose file-t.

- probaltam definialni a drivert: driver:local

- a yaml validator nem dob hibat

- probaltam abszolut eleresi uttal is megadni a tarolot: /var/lib/docker/volumes/gyore-net_db: /var/lib/mysql

Ami feltunt, amennyiben "docker run..." paranccsal keszul a container akkor a "-v gyore-net_db:/var/lib/mysql" nincs "space" a gyore-net_db: es a /var kozott.

A compose-ban pedig kell tenni.

 

Mit rontok el? A valaszokat elore is koszonom!

Hozzászólások

Szerkesztve: 2022. 12. 30., p – 19:40

: utáni szóköz biztos baj

 - gyore-net_db: /var/lib/mysql

helyett legyen

 - gyore-net_db:/var/lib/mysql

 

ugyanúgy, mint a portnál

Próbáld meg a services alatt egy volume szekcióval:

version: '2'

services:

   gyore-net_db:

       image: mariadb:latest

       container_name: gyore-net_db

       restart: always

       ports:

           - 10006:3306

       environment:

           MARIADB_ROOT_PASSWORD: kurvatitkosjelszo

           MARIADB_DATABASE: nextcloud_db

           MARIADB_USER: nextcloud_user

           MARIADB_PASSWORD: titkosjelszo

       volumes:

           - gyore-net_db: /var/lib/mysql

volumes:
       gyore-net_db:

Alakul, koszonom. :) Mind kettotok kellett hozza, mert nem kell oda a szokoz, illetve kellett ez a + volumes szekcio is. Most mar csak annyi a bajom, hogy annak a konyvtarnak a nevet ele rakja a tarolonak, ahol futtatva van a compose. pl.: a docker mappaban van, akkor igy nez ki a tarolo: docker_gyore-net_db

 

Erre nincs egy gyors megoldasa valakinek? Illetve hogy miert kell meg egyszer a service ala felvenni a tarolot?

 

Koszi elore is!

A volume a konténeredtől független valami, nem azon belül "él".

Amikor a container-en belül hivatkozol rá akkor azt mondod meg neki melyik named (nevesített) volume-ot használja. Amikor a services alatt adod meg a volume-okat, akkor tulajdonképpen deklarálod őket. Gondolj rá úgy, mint egy változó definiálására, a konténerben meg használod a "változód".

Például egy volume-ot tudsz használni több konténerből is, paraméterezheted, stb...