Create a new project using composer:
composer create-project somnambulist/symfony-micro-service <folder> --no-scripts
Customise the base files as you see fit; change names, (especially the service names), config values etc to suite your needs. Then:
docker-compose up -d to start the docker environment in dev mode. Be sure to read Service Discovery to understand some of how the docker environment is setup.
Note: to use the latest version add
dev-master as the last argument when creating a project. This will checkout and use the current master version, instead of a tagged release.
Alternatively if using
Project Manager with the default templates:
spm new:service <service_name> api or without the service name/template to use the wizard.
Recommended First Steps
This project uses
example.dev throughout. Your first step would be to change the base PHP namespace (if desired). PhpStorms refactoring / renaming is highly recommended for this action.
The domain name is set in several places, it is strongly recommended to change this to something more useful. The following files should be updated:
You should be sure to read Compiled Containers.
The following docker services are pre-configured for development:
- PHP 8.0 running php-pm 2.X
Test config includes all services to successfully run tests.
Release / production only defines the app as it is intended to be deployed into a cluster.
Docker Service Names
The Docker container names will be prefixed by a project name defined in the
.env file. This is the constant
COMPOSE_PROJECT_NAME. If you remove it, the current folder name will be used instead. For example: you create a new project called "invoice-service", without setting the COMPOSE constant the containers started via
docker-compose will be prefixed with
invoice-service_. If you have a lot of docker projects, they may have similar folder names, so using this constant avoids collisions.
The second constant that needs setting is
APP_SERVICE_APP. This is the name of the PHP application container. By default this is
app. It is strongly recommended to change this to something that is more unique. If you do change this, be sure to change the container name in the
docker-compose*.yml files otherwise it will not be used. This name is used by SyncIt to resolve the application container and by the
DNS and Proxy where moved to data service.