Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Pseudo-microservices project written in Laravel

NotificationsYou must be signed in to change notification settings

koutsoumposval/laravel-microservices

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

A simple laravel pseudo-microservices demo project.This is NOT a real "microservices" setup or at least something that is production ready!It is only here to point out the separation of concerns between each service and get you startedwith a containerized local environment using docker with a reverse proxy on top.

This project consists of three web servicesuser,product &order andone API gatewayapi-gateway.

The webservices are containerised with Docker and are accessible within aTraefik proxy interface.

traefik image is used for the proxy container andphp:7.1-apache is used and extendedfor the web services containers & the API gateway

Theapi is using the Guzzle API Client in order to maintain connection with the web services.

Lumen was preferred since it is an easy way to expose APIs.

Set up

Install Docker

The current Docker environment is based on Docker Toolbox.If you don't have Docker Toolbox installed, you can download ithere.

Create a docker-machine *

    docker-machine create laravel-microservices    eval $(docker-machine env laravel-microservices)

Mount volumes as NFS

To prevent permission problems we leverage Docker-Machine-NFS to mount volumes as NFS.First,install docker-machine-nfs and then run the following command:

docker-machine-nfs laravel-microservices --nfs-config="-alldirs -maproot=0" --mount-opts="noacl,async,nolock,vers=3,udp,noatime,actimeo=1"

Create the external network

    docker network create traefik_webgateway

Update the your hosts file

    # Get the ip of the VMachine    docker-machine ip laravel-microservices        # Update /etc/hosts file    192.168.99.100 lm.local user.lm.local inventory.lm.local order.lm.local api.lm.local

Setup all services

In order to get up and running, you need to setup eachindividual service.

Once you set all services, you are ready to use them.

Build & Run

    docker-compose -f docker/docker-compose.yml up -d --build

Access

You can access the applications from:

    #user    http://user.lm.local        #inventory    http://inventory.lm.local        #order    http://order.lm.local        #api gateway    http://api.lm.local

Reverse proxies

You can access Traefik interface from:

    http://lm.local:8080

Teardown and "Scale"

Teardown

    docker-compose -f docker/docker-compose.yml down --volumes --remove-orphans

Scale

    # DEPRECATED    docker-compose -f docker/docker-compose.yml scale ${container-name}

Isolate Web Services

Removing thetraefik.frontend.rule from the Web services will makethem accessible only from the API gateway (traefik backend network)

Your Next Steps

Once you get started, you need to consider some of the following:

  • Use databases to store data. You can add new dockermysql containers indocker/docker-compose.yml and applyproxy configuration in order to be able to access them.
  • Each service must be accessible from a unique entry point, in our case the APIs.This should be the only way for communication between services.
  • Communication between the services should not be direct. One service should not be aware of the other!This type of communication can be achieved by using messaging or events.
  • Tests are essential part of software development. Functionality of each service should beunit tested. Functionality of the whole flow should be functionally tested.
  • This is a setup that is using older versions of Docker, Laravel/Lumen. Update them in order to be able touse their latest features.

About

Pseudo-microservices project written in Laravel

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp