Docker running Nginx, PHP-FPM, Composer, MySQL and PHPMyAdmin.
-
Before installing project make sure the following prerequisites have been met.
-
We’ll download the code from its repository on GitHub.
-
By this point we’ll have all the project pieces in place.
-
When running, you can use docker commands for doing recurrent operations.
To run the docker commands without using sudo you must add the docker group to your-user:
sudo usermod -aG docker your-user
For now, this project has been mainly created for Unix (Linux/MacOS)
. Perhaps it could work on Windows.
All requisites should be available for your distribution. The most important are :
Check if docker-compose
is already installed by entering the following command :
which docker-compose
Check Docker Compose compatibility :
On Ubuntu and Debian these are available in the meta-package build-essential. On other distributions, you may need to install the GNU C++ compiler separately.
sudo apt install build-essential
You should be careful when installing third party web servers such as MySQL or Nginx.
This project use the following ports :
Server | Port |
---|---|
MySQL | 8989 |
PHPMyAdmin | 8080 |
Nginx | 8000 |
To install Git, download it and install following the instructions :
git clone https://github.com/sahedbs23/oscar-car-rental.git
Go to the project directory :
cd oscar-car-rental
.
├── Makefile
├── README.md
├── data
│ └── db
│ ├── dumps
│ └── mysql
├── doc
├── docker-compose.yml
├── etc
│ ├── nginx
│ │ ├── default.conf
│ │ └── default.template.conf
│ ├── php
│ │ └── php.ini
│ └── ssl
└── web
├── app
│ ├── composer.json.dist
│ ├── phpunit.xml.dist
│ ├── src
│ │ └── App.php
│ └── test
│ └── bootstrap.php
└── public
└── index.php
-
Start the application :
docker-compose up -d
Please wait this might take a several minutes...
docker-compose logs -f # Follow log output
-
Open your favorite browser :
- http://localhost:8000
- http://localhost:8080 PHPMyAdmin (username: dev, password: dev)
-
Stop and clear services
docker-compose down -v
docker run --rm -v $(pwd)/web/app:/app composer require symfony/yaml
docker run --rm -v $(pwd)/web/app:/app composer update
docker-compose exec -T php ./app/vendor/bin/phpunit --colors=always --configuration ./app
Analyzing source code with PHP Mess Detector
docker-compose exec -T php ./app/vendor/bin/phpmd ./app/src text cleancode,codesize,controversial,design,naming,unusedcode
docker-compose exec php php -m
docker exec -it mysql bash
and
mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD"
mkdir -p data/db/dumps
source .env && docker exec $(docker-compose ps -q mysqldb) mysqldump --all-databases -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" > "data/db/dumps/db.sql"
source .env && docker exec -i $(docker-compose ps -q mysqldb) mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" < "data/db/dumps/db.sql"
Notice:
Replace "YOUR_DB_NAME" by your custom name.
source .env && docker exec $(docker-compose ps -q mysqldb) mysqldump -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" --databases YOUR_DB_NAME > "data/db/dumps/YOUR_DB_NAME_dump.sql"
source .env && docker exec -i $(docker-compose ps -q mysqldb) mysql -u"$MYSQL_ROOT_USER" -p"$MYSQL_ROOT_PASSWORD" < "data/db/dumps/YOUR_DB_NAME_dump.sql"
Notice:
Import postman collection from api-doc/postman_collection.json
Notice:
Import postman environment from api-doc/postman_environment.json
Notice:
A car license is Unique at the Database level. You can import the content from the file just once.
- GET http://localhost:8000/cars for list and search car collections.
- GET http://localhost:8000/cars/{car id} to read details about a car.
- POST http://localhost:8000/cars to Create a new car.
- Get http://localhost:8000/read-files to read CSV and JSON file contents.
- POST http://localhost:8000/write-files to import CSV and JSON file contents to the Database.