Wpis z mikrobloga

Cześć wszystkim, przygotowałem aplikacje webowa w django, korzystajaca z ngnix, postgresql, redis, uwsgi.

Wszystko mam w dokerze. Lokalnie u mnie na pc (windows) wszystko działa. Kontenery się tworzą, aplikacja działa w przeglądarce.

Natomiast mam problem ze skutecznym wgraniem tego gdzieś do sieci.

Próbowałem z EC2 aws - Linux nie działa, nie chca sie kontenery zbudowac (web i postgre, ngnix i redis działają). Windows - nie dziala w ogole docker, brak opcji wlaczenia virtualizacji, lub ja takiej nie znam.

Dnia trzeciego stwierdziłem że musze zapytać mirków! Proszę, doradźcie gdzie i jak to wgrać.

#django #docker
  • 20
Próbowałem z EC2 aws - Linux nie działa, nie chca sie kontenery zbudowac


@Schabowe_privilege: jakbys tak napisal co dokladnie nie dziala, jakis error msg to ktos ci pewnie pomoze ;)

ogolnie obrazow nie budujesz na docelowej maszynie, najlepiej by bylo je budowac na jakims CI i pushowac juz zbudowane do dockerhuba czy tam aws ecr

jak juz chcesz na upartego budowac tam na ec2 no to nikt ci z fusow nie
@LaylaTichy: dzięki za odpowiedź

chodzi mi o główne założenia takiego wgrania 'zdokeryzowanej' apki. ja musze robić coś fundamentalnie źle, złe środowisko do wgrania dockera tworzonego na windowsie? lokalnie wszystko dziala.

jak byście mieli taką apke django, która się buduje w dockerze i hula lokalnie, to gdzie byście to wgrali? Natknąłem się na dockerhuba - ale myślałem że to jest raczej do pracy zespolowej nad projektem, a nie że bedzie publiczne ip
Schabowe_privilege - @LaylaTichy: dzięki za odpowiedź

chodzi mi o główne założenia t...

źródło: 1

Pobierz
@Schabowe_privilege: z tym errorem pierwsze co mi na mysl przychodzi to to, ze docker startuje u ciebie jako root, natomiast kontenery nie ma uprawnien do tworzenia plikow w zamontowanym volume, aczkolwiek jest duza szansa, ze sie myle

https://stackoverflow.com/questions/40462189/docker-compose-set-user-and-group-on-mounted-volume

ogolnie pierwsza rzecz jaka wyglada fishy na tym errorze to sciezka do pg_tblspec/.gitkeep.txt/...

wiec moze prosty brak '/' gdzies w volume

+ zawsze mozna sprobowac po prostu przecleciec sciezki gdzie placze o brakuajce
@LaylaTichy: fajnie rozwinąłeś temat, dziękuję :D

a) Czyli najprościej i najlepiej będzie skorzystać z ECS - tam nie powinno być problemów z uprawnieniami? Napisałeś że jest duża szansa że nie o uprawnienia chodzi - pojawia mi sie tez błąd o braku dostepu do plików core/~~ .c w container WEB. Wiec moze cos byc z tymi uprawnieniami.

b) Tworzenie image - ja u siebie na kompie, tak jak jest na screenie, mam
Schaboweprivilege - @LaylaTichy: fajnie rozwinąłeś temat, dziękuję :D

a) Czyli najpr...

źródło: 2

Pobierz
@Schabowe_privilege: mozesz mi powiedziec co sie u ciebie dzieje jak masz ten plik compose i wyrzucisz z niego container web? bo w sumie compose wyglada ok

ja takie cos zostawilem

https://i.imgur.com/sqGATiT.png

nie mam folderow data i config wiec przy compose up sie tworza i bangla

https://i.imgur.com/ZGYppdG.png

kto jest u ciebie ownerem tych katalogow?

jedyne co zrobilem po bootnieciu ec2 to

sudo yum install docker -y

sudo service docker start

sudo usermod
@Schabowe_privilege: nginx, post i redis ruszyly u mnie bez problemu

http://ec2-54-78-43-137.eu-west-1.compute.amazonaws.com/

co do ecs no tam bedzies zmial wiecej zabawy bo musisz zrobic task definitions i uruchomic serwisy, wiec musialbyc poczytac tam o port mappingu i jak sie volumy montuje aczkolwiek ten docker-compose powinien banglac

co do pushowania obrazu, na gh pewnie masz jakis poradnik na necie i jakies akcje do budowania i pushowania czy to do docker huba czy do
@LaylaTichy:
czyli szybciej bedzie doprowadzić do porzadku ec2 linux 2, z tego co rozumiem

kto jest u ciebie ownerem tych katalogow?

na ec2 - dodalem w screenie poniżej. To chyba jest ten trop. Z command line nie moge wejsc nawet w folder db, uzytkownik to jakis libstoragemgmt... zmienic go na ec2-user?

EDIT - widze że screen sie nie chce wczytac wiec wkleje też same komunikaty z cmd:

-rw-rw-r-- 1 ec2-user ec2-user
Schaboweprivilege - @LaylaTichy: 
czyli szybciej bedzie doprowadzić do porzadku ec2 l...

źródło: 4

Pobierz
czyli szybciej bedzie doprowadzić do porzadku ec2 linux 2, z tego co rozumiem


@Schabowe_privilege: no ec2 bedzie szybciej dojsc dlaczego nie trybi ale chyba juz w sumie mam pomysl

na ec2 - dodalem w screenie poniżej. To chyba jest ten trop. Z command line nie moge wejsc nawet w folder db, uzytkownik to jakis libstoragemgmt... zmienic go na ec2-user?


@Schabowe_privilege: mozesz mu dac chowna albo na ec2-user albo na roota,
@LaylaTichy: a jeżeli w ogole nie potrzebuje danych, które potworzyłem testowo lokalnie (w sensie to co już w apce wyklikałem, jak była uruchomiona), to mogę skasować ten folder data? Chyba właśnie to sugerowałeś w poprzednim poście

BTW: w screenie poniżej błąd przy tworzeniu web - brak uprawnien, do pliku który sam stworzył?

bind(): Permission denied [core/socket.c line 230]
Schabowe_privilege - @LaylaTichy: a jeżeli w ogole nie potrzebuje danych, które potwo...

źródło: 5

Pobierz
@LaylaTichy:

wtedy jak dasz compose down i compose up znowu bedziesz mial czysto


ale to nie dawać tego volume co teraz mam w docker-compose (poniższy kod), czy tego Twojego z postu powyżej? Bo tak generalnie po compose up, w srodowisku produkcyjnym, docelowym, to bym chciał żeby dane oczywiscie sie gromadzily poprawnie. Nie zależy mi tylko na tych obecnych testowych

services:

db:
image: postgres:14.5
restart: always
** volumes:
- ./data/db:/var/lib/postgresql/data**

Mam wrażenie
@Schabowe_privilege: tak mozesz usunac folder data, ew po prostu wyczyscic co masz w srodku zeby usunac nalecialosci z systemu windowsa i wgrac dump.sql jak juz postgress wstanbie zeby miec jakies tetsowe dane, albo zostawic pusty i wtedy postgress wstanie bez baz danych itd, czysty, jak jakies dane utworzysz to one si epojawia w folderze data na aws, zeby to zmigrowac sobie na lokalne srodowisko robisz dumpa i lokalnie wgrywas zplik sql,
@LaylaTichy: skasowałem folder data, puscilem docker compose up --build (z sudo i bez). Pojawil sie komunikat jak poniżej (screen nr 1). Nadałem uprawnienia sudo chown ec2-user wait-for-it.sh , bo był w logu. ponowny build dał ten sam poniższy błąd. W folderach nie ma już tego folderu / pliku, więc on go tworzy sam, i nie ma do niego uprawnień?

to może mieć jakiś zwiazek z tymi?

uid=www-data
gid=www-data

Założyłem też całkowicie
Schabowe_privilege - @LaylaTichy: skasowałem folder data, puscilem docker compose up ...

źródło: 8

Pobierz
@LaylaTichy: to daj numer jakiegoś paczkomatu, podeślę Ci rafaello, ferrero i pryncypalki - jakies fajne paczki :D już i tak mi dużo pomogłeś. numer kom nie musisz jak nie chcesz, wyślę Ci info prywatną jak coś.

co do meritum - dzięki Twoim radom jest znacznie lepiej. db, cache, ngnix sie odpalily i jest ok. Pojawił się błąd o dostępie do wait-for-it.sh więc dodałem uprawnienia chmod +x wait-for-it.sh i jest ok.

Obecnie
Schaboweprivilege - @LaylaTichy: to daj numer jakiegoś paczkomatu, podeślę Ci rafaell...

źródło: 10

Pobierz
to daj numer jakiegoś paczkomatu, podeślę Ci rafaello, ferrero i pryncypalki - jakies fajne paczki :D już i tak mi dużo pomogłeś. numer kom nie musisz jak nie chcesz, wyślę Ci info prywatną jak coś.


@Schabowe_privilege: nie mieszkam w polsce od dobrych 10 lat, no i po drugie no bez przesady, nie jestem typem z elektrody, zawsze dobrze komus pomoc ;)

co do binda to na pierwszy rzut oka, masz tam
@LaylaTichy:

nie mieszkam w polsce od dobrych 10 lat


fiu, fiu, powodzi się ( ͡° ͜ʖ ͡°) it za granicą musi być dobre. Ja na codzień programuje pare lat w t-sql i c# od 1,5roku. NIC się nie pokrylo z tych technologii z tym co robię w django. ani jeden program, ani jedna komenda, ani jedna technologia. nigdy bym nie wymyślił takich problemów jakie mam z tym
Schaboweprivilege - @LaylaTichy: 
nie mieszkam w polsce od dobrych 10 lat

fiu, fiu, ...

źródło: 11

Pobierz
@Schabowe_privilege: troche tutaj mylisz rzeczy ;) ec2-user istnieje na ec2, ale nie istnieje w tym dockerfile, przynajmniej tak zakladam, ze nie maja takiego usera w swoim obrazie, a user www-data chyba nie istnieje na ec2 domyslnie

przy tej linijce w dockerfile
COPY . /code/

sprobuj

COPY --chown=www-data:www-data . /code/

i w configu zmien sprowrotem na www-data moze ruszy, ew jak chcesz moge ci wyslac moj ssh key i jak chces zmozesz
@LaylaTichy:
spróbowałem i błąd zmienił się z powrotem na tego binda. Niestety spróbowałem błednej ścieżki i puściłem sudo chown -R www-data:www-data ./ . Teraz nie mogę nic już zrobić.

jak chcesz moge ci wyslac moj ssh key i jak chces zmozesz mnie dodac do ec2 to zoabcze co tam sie dzieje


pewnie, to podeślij proszę, ale ja chyba najpierw nowy ec2 zaloze, czy da rade po takiej komendzie jeszcze z tego