Giter Club home page Giter Club logo

kickstart's Introduction

NFQ Akademija

Intro

Sveiki! Tai yra Jūsų startinis projekto "template". Šioje repositorijoje rasite Symfony 4.3.5 minimalų projekto paketą su jau paruoštais visais reikalingais failais ir įrankiais darbui:

  • Lokalaus development'o aplinka (docker) (PHP 7.3, MySql DB, Nginx)
  • Paprastas pavyzdys (Controller, Template, CSS)
  • Įdiegtas bootstrap
  • Asset'ų buildinimas (encore, yarn, sass)
  • GitHub actions (CI) pavyzdys

Paleidimo instrukcija

Metai iš metų studentai maldavo jog galėtų dirbti su Windows'ais akademijos metu. Bet nepaisant nieko, tolerancijos ir palaikymo Windows operacinei niekada nebuvo ir nebus.

Perspėjimas: Itin kieti profesionalai nenaudoja niekam tikusių operacinių sistemų.

Reikės dokerio

📹 Diegimo pavyzdys

Naudosime naujausią dokerio versiją, kuri įgalina virtualizaciją be Virtualbox ar Vmware. Tam reikės, kad jūsų kompiuterio procesorius palaikytų Hypervisor. Nėra dėl ko nerimauti, dabartiniai kompiuteriai kone visi turi šį palaikymą.

Parsisiunčiate ir įsidiegiate įrankį iš čia. Iškart įdiegus reikia pasidaryti, kad docker būtų galima naudoti be root teisių, kaip tai padaryti rasite čia.

Parsisiunčiate ir įsidiegiate docker-composečia.

Taip pat rekomenduojama įsidiegti Kitematic. Patartina naudoti v0.17.7, nes tai paskutinė stabili versija, palaikoma Ubuntu. Šis įrankis padės geriau organizuoti dokerio konteinerius.

Versijų reikalavimai

  • docker: 18.x-ce
  • docker-compose: 1.23.2

Projekto paleidimas

📹 Paleidimo pavyzdys

Pasileidžiant pirmą kartą būdavo įveliama daug klaidų, todėl padaryti script'ai dažniausiems atvejams.

  • Pasileidžiama infrastruktūrą per dockerį:
scripts/start.sh
  • Įsidiegiame PHP ir JavaScript bibliotekas:
scripts/install-first.sh
  • Pasižiūrime, ar veikia. Naršyklėje atidarius http://127.0.0.1:8000/ turėtų rašyti NFQ Akademija

  • Pabaigus, gražiai išjungiame:

scripts/stop.sh

Patogiai darbo aplinkai

📹 Komandinės eilutės naudojimo pavyzdys

  • Development režimas (detalesnė informacija apie klaidas, automatiškai generuojami JavaScript/CSS):
scripts/install-dev.sh
  • Production režimas (imituoti, kaip daroma LIVE serveryje. Plačiau .deploy/build.sh):
scripts/install-prod.sh
  • Jei norite pridėti PHP biblioteką arba dirbti su Symfony karkasu per komandinę eilutę:
scripts/backend.sh
  • Jei norite pridėti JavaScript/CSS biblioteką arba dirbti su Symfony Encore komponentu per komandine eilutę:
scripts/frontend.sh
  • Jei norite dirbti su MySql duomenų baze:
scripts/mysql.sh
  • Jei nesuprantate, kas vyksta su infrastruktūra, praverčia pažiūrėti į Log'us:
scripts/logs.sh
  • Jei kažką stipriai sugadinote ir niekaip nepavyksta atstatyti. Viską pravalyti (naudokite atsakingai) galima su:
scripts/clean-and-start-fresh.sh

Dažniausiai užduodami klausimai

  • Kaip įkelti savo pakeitimus į LIVE? Jei viskas gerai sukonfiguruota, užteks sudėti pakeitimus į master. Jei neveiks, plačiau žr. įkėlimo į serverį dokumentacijoje

  • Kaip prisijungti prie duomenų bazės su savo mėgstamu MySql redagtoriumi? Trumpai: scripts/mysql.sh atspausdina visus prisijungimus. Plačiau žr. MySql GUI dokumentacijoje

  • Kur rašyti slaptažodžius arba el. pašto prisjungimus? Trumpai: naudokite .env.local (nesumaišyti su .env) – jis nekeliamas viešai į GitHub Plačiau žr. darbo su serveriu instrukcijoje

  • Kaip pasileisti xDebug? Trumpai: ./scripts/backend.sh /enable_xdebug.sh <TAVO_KOMPO_IP_ADRESAS> Plačiau žr. xDebug dokumentacijoje

  • Turių daugiau techninių klausimų? Google ir StackOverflow yra geriausi tavo draugai. Nepavykus – kreipkis į savo mentorių. Jei jis nepadės, nukreips į atitinkamą lektorių arba pamokys git blame, kad žinotumei, kur kreiptis toliau.

Feedbackas

Jeigu taip nutiktų, kad repositorijoje, projekto template ar instrukcijoje rastumėte klaidą, tai nesišnibždėkite vieni tarp kitų, o sukurkite "issue". O jei atidarysite "pull requestą" su fixu, gausite iškart 1000 karmos taškų.

kickstart's People

Contributors

aurelijusb avatar aurelijusbanelis avatar dariuskasiulevicius avatar dominykasmurauskas avatar gitazemguliene avatar jul1u5 avatar jurg-draft avatar lukosius avatar mariusgrigaitis avatar marltu avatar niumis avatar saimaz avatar sergejvoronov avatar skirmantasjanuskas avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

kickstart's Issues

Document debugging

How to setup environment with debugging? I don't see it mentioned in documentation.

Tobulintinos vietos

  • Kaip saugoti slaptažodžius: .env.local
  • Kaip pasileisti fixtures (nes dev package): mysql klientas
  • Kaip pasileisti su xammp (Windows): yarn, node-sass ir pan.
  • Testai namų darbuose: url escape vs url encode
  • Testai namų darbuose: filmukas pull request (galima daryti ir su git pus nebūtina su GUI)
  • Testai namų darbuose: git fetch naujausią branch'ą
  • Ką naudoti paštui: gmail
  • Code style: kaip nusistatyti PHPStorm
  • React router pavyzdys: aurelijusb#135
  • GitHub push neveikia: ar waiting for e-mail ar SSH rakto problemos

No way to manage php extensions

There is no way to manage php extensions in fpm container. There is a "hack" in base image, still containers will not persist data even if extensions are installed.

Details:

  • OS: Any
  • Docker version: Any

docker-compose-logs no such command

README.md mentions docker-compose-logs.

There is actually no such command. Should probably be changed to docker-compose logs (no the space instead if -)

Dažniausios klaidos su MySql

Testuojama ne ta duomenų bazė

mysql -uroot -h127.0.0.1 --port=3306 -p

Bet dokumentacijoje specialiai padaryta su 330 7:

mysql -uroot -h127.0.0.1 --port=3307 -p

Kad naudotų dockeryje esantį MySql'ą ir jis nesikirstų su įdiegtų per apt-get install ar pan.

Kaip patikrinti:

  • docker ps rodo port'us
  • per php.symfony bin/console doctrine:database:create rodo duomenų bazės pavadinimą
  • per php.symfony env | grep DATABASE_URL rodo realią reikšmę

Komandos paleidžiamos prod / dev konteineriuose

Pakeičiamas DATABASE_URL reikšmė .env faile, bet bin/console vis tiek meta klaidas
Yra skirtumas tarp dev ir prod ir ci.nfqakademija.lt:

docker exec -it php.symfony bash
docker exec -it prod.php.symfony bash

Vienur imama iš .env, kitur įmituojamas padavimas per nginx/environment

Keliant į akademijos serverius, .env failas pakeičiamas jau sugeneruotų. Jei reikia papildomų pakeitimų (magiškai iš .env.dist nepaima), tai reikia per SSH prisijungti prie akademijos serverių

Kaip patikrinti:

  • Konteineryje paleisti env – ir žiūrėti reikšmes (ypač APP_ENV)

Pakeitimai išmėtyti per .env, site.conf ir docker-compose.yml

Pakeitimai .env faile neatsinaujina neperkrovus docker konteinerių 🪲

docker-compose perduoda APP_ENV kitmaąjį iš .env, bet (index.php)[https://github.com/nfqakademija/kickstart/blob/master/public/index.php#L11] ima duomenis iš .env tik kai nėra nustatytas APP_ENV

Apėjimas:

  • Perkrauti konteinerius: docker-compose kill ir docker-compose up -d

Dėkui @Xeriaz už surastą klaidą

Yra daug vietų, kur keisti konfigūraciją – gal galima sugeneruoti 💡

Dabar DATABASE_URL=mysql://root:[email protected]:3306/symfon yra tiesiog copy-paste docker-compose.yml, .env.dist ir site.conf failuose

Įmanoma būtų padaryti --endpoint script'ą, kad sugeneruotų reikiamus parametrus į environment ir nginx.
Pradinė idėja buvo – su kodo generavimu bus per daug magijos – bet su copy-paste yra per daug klaidų.

Neaiškios Docker pasileidimo vietos po migracijos į Symfony4

Atsiliepimai iš komandų:

  • Neaiškios slaptažodžių pakeitimo vietos
  • fixuoti port'ai (per daug žmonių turi pasileidę apache, MySql ar pan.
  • senas frondned konteineris neištrinamas (trūksta --rm)
  • Naišku, kai pereinama tarp php ir frontend konteinerių (norima leisti komandas tame pačiame konteineryje
  • docker-compose APP_ENV=prod neaišku kodėl (reikėtų atskirti į atskirus stack'us)
  • dokumentuoti env.dist
  • tavis integracija (docker teisės)
  • perkelti ./docker/docker-compose.yml (nes vis lieka kažkur sena dokumetnaicja)
  • docker-compose kill neveikia (./docker/docker-compose.yml numigruotas)
  • atskirti suk4limui į serverį failus (kad nesimaišytų nuo kodo)

Susiję: #20, #22

Prie progos prisėsiu, pataisyti. Jei yra daugiau pasiūlymų, papildykite...

Update to Symfony 4?

Since Symfony 4 is released, maybe we can update to tu use Symfony 4, instead of 3.2?

Some tips for Windows users

Hello students,

I was one of the students at the NFQ academy. I developed on Windows and met problems launching the project. I will share my experience to save your time. Here are my tips.

  1. I suggest using Vagrant instead of Docker Toolbox (it is for older Windows versions).
  2. Who has experience with Laravel Homestead, you can use it. It works fine as well.
    Here is a great tutorial, how to install Homestead on Windows.
    Why Homestead? You can set up a local domain address, something like - nfq.test. Probably you can do that and without Homestead, I did not try.
  3. Once Vagrant setup and running, enter Vagrant vagrant ssh. Go to the project folder, for example, cd code/project and clone your project, which will be based on kickstart.
  4. Then follow up instructions from kickstart.
  5. Maybe it was only for me, but I had numerous problems launching the project, mostly with MySQL container.
  • First of all, before launching Docker (scripts/start.sh) go to scripts/docker-compose.yml and edit ports of nginx.symfony container:
    from - 127.0.0.1:8000:80
    to - 8000:80
    127.0.0.1 is the localhost, but we are using Vagrant, so we need to use Vagrant local IP or leave empty.
    Homestead users will reach the project by entering their setup local address (for example nfq.test:8000).

  • One of the problem was related to permissions. I fixed it by adding :rw in file scripts/docker-compose.yml:
    - ../.docker/mysql-data/:/var/lib/mysql:rw. Solution.

  • It could be that :rw do not help. Then try to rename volume address:
    from - ../.docker/mysql-data/:/var/lib/mysql
    to - ../.docker/mysql-data/:/var/lib/mysql1

  • Forgot to mention, that the SSH client (for example Putty or Git Bash) must be started with option Run as administrator, otherwise, you will have many problems inside Vagrant.

NOTE. Do not forget to revert all changes to the original in file docker-compose.yml before pushing to your repository.

It is just my advises, hopefully, it will help somebody. Choose what works best for you.

Good luck and have fun.

Dažnaiusios deploy klaidos

  • .deploy/hosts - ansible_user=kickstart vietoj kickstart savo komandos useris
  • Makefile - prie ARTIFACT_INCLUDES prideti translations (jei naudojamas translations bundle), nes kitaip failina cache:clear (neranda translations diro)
  • .env.dist nėra kopijuojamas, todėl specialios .env.dist reikšmės turi būti pakeistos shared/.env faile rankomis prisisshinus (Kontekstui: https://github.com/nfqakademija/kickstart/blob/master/.deploy/playbook.yaml#L9)
  • Sena composer.json naudoja symfony/dotenv kaip require-dev – bet serverio konfiguracija tikisi, kad būtų prie ir produkcinėje versijoje (requruire dalyje)
  • Jei gaunate, klaidą, kad neranda kažkokio katalogo, turbūt nepridėjote jo pavadinimo į ARTIFACT_INCLUDES faile Makefile (pvz. problemos sutranslations katalogu)
  • Pavyzdyje gali būti likusi klaida su linked_files: - shared/.env, jei gaunate if you really want to create the link: /home/.../shared/shared/.env, reikėtų vietoj shared/.env naudoti tiesiog .env

npm container has no entrypoint

npm container, exists every time a custom command is executed. Running container for each npm action and will just spam with new container and volumes. This just bloats ups space usage. A simple fix would be to add even a dummy entry point like "sleep infinity" that will keep a single container active, and docker-compose exec will be able to reuse npm container

Details:

  • OS: Any
  • Docker version: Any

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.