DiscoverPlaces Raport #1 – docker + symfony
Poszły pierwsze commity, więc czas na pierwszy raport na temat projektu, który realizuję w ramach konkursu Daj się Poznać. Na czym on polega opisane zostało w tym wpisie .
Wstęp
Pierwszą rzeczą od której zaczynam jest przygotowanie API. Będzie ono stosunkowo proste, więc jest to łatwiejsza część. Po zamknięciu prac nad API przejdę do tworzenia aplikacji, co będzie już trudniejsze dla mnie, gdyż wiąże się to z poznaniem nowych technologii, których nie miałem jeszcze okazji używać. Jednak z tego powodu będzie to najciekawsza część projektu. Zawsze to nowe wyzwania oraz doświadczenia, czyli nie będzie nudno. Poza tym takie mamy czasy, że technologie zmienia się częściej niż rękawiczki, szczególnie na froncie, więc dobrze jest mieć szersze rozeznanie i nie zamykać się na jedną opcję.
Środowisko
Niestety dosyć dużo czasu zajęło mi skonfigurowanie środowiska pracy. Postanowiłem przy okazji ogarnąć Dockera, z którym wcześniej nie miałem styczności, więc pojawiło się trochę problemów. Początkowo zamierzałem utworzyć własną konfigurację, jednak porzuciłem ten pomysł i użyłem gotowca php7-dockerized, którego jedynie lekko zmodyfikowałem. Tutaj również napotkałem na kilka problemów, jednak jakoś udało się to ruszyć. Poniżej przedstawione zostało kilka uwag odnośnie używania docker-compose.
Jak uruchomić docker-compose bez sudo?
Trzeba dodać grupę, jeśli jeszcze taka nie istnieje, następnie dodać usera, na którym jesteśmy zalogowani do tej grupy oraz zrestartować usługę.
sudo groupadd docker sudo gpasswd -a ${USER} docker sudo service docker restart
Uprawnienia plików
Problem, który spotkałem dotyczy plików tworzonych w kontenerze. W moim przypadku były to pliki tworzone przez generator encji w doctrine, który odpalany był z poziomu kontenera. Następnie będąc na swoim systemie „bazowym” niemożliwe było edytowanie tych plików, gdyż właścicielem wygenerowanych plików był root. Niestety jedyne rozwiązania jakie znalazłem to
- utworzenie użytkownika w kontenerze z takim samym uid oraz gid jak użytkownik w systemie bazowym
- po każdym utworzeniu jakichś plików z poziomu kontenera modyfikowanie właściciela
Póki co bardziej rozsądną opcją wydaje mi się ta druga.
sudo chown -R $USER:$USER .
Symfony
Obecnie rozplanowałem strukturę katalogów oraz dodałem dwie encje: Message oraz Comment, których konfiguracja została przedstawiona poniżej.
AppBundle\Entity\Message: type: entity table: null repositoryClass: AppBundle\Repository\MessageRepository id: id: type: integer id: true generator: strategy: AUTO fields: content: type: text nullable: true photo: type: string length: 255 nullable: true video: type: string length: 255 nullable: true latitude: type: float longitude: type: float scope: type: integer date: type: datetime lifecycleCallbacks: { } oneToMany: comments: targetEntity: AppBundle\Entity\Comment mappedBy: message cascade: ["persist"]
AppBundle\Entity\Comment: type: entity table: null repositoryClass: AppBundle\Repository\CommentRepository id: id: type: integer id: true generator: strategy: AUTO fields: content: type: text nullable: true photo: type: string length: 255 nullable: true video: type: string length: 255 nullable: true date: type: datetime lifecycleCallbacks: { } manyToOne: message: targetEntity: AppBundle\Entity\Message
Kontrolery podzielone zostały na dwie części: Front oraz Backend. W Front\Api powstawało będzie API używane w aplikacji, nastomiast Backend to przygotowanie pod ewentualny panel admina ze statystykami etc.
Jak na razie nie za wiele, liczę że tydzień lub dwa i API będzie gotowe, następnie przejdę do tworzenia aplikacji w React Native. Repozytorium API znajduje się tutaj.
Subscribe and master unit testing with my FREE eBook (+60 pages)! 🚀
In these times, the benefits of writing unit tests are huge. I think that most of the recently started projects contain unit tests. In enterprise applications with a lot of business logic, unit tests are the most important tests, because they are fast and can us instantly assure that our implementation is correct. However, I often see a problem with good tests in projects, though these tests’ benefits are only huge when you have good unit tests. So in this ebook, I share many tips on what to do to write good unit tests.
Dodaj komentarz