YAML Converter Extension for Yii 2.0 Framework
:rotating_light: THIS REPOSITORY IS DEPRECATED, (*1)
TL;dr
This is a console command to convert and merges YAML files., (*2)
This project was developed as a helper-tool for our Docker development and build process and may be currently in a
heavily biased state., (*3)
Note you can run this command directly with docker
, since it's part of Phundament. See below for details., (*4)
Installation
The preferred way to install this extension is through composer., (*5)
Either run, (*6)
composer require --prefer-dist dmstr/yii2-yaml-converter-command "*"
to the require section of your composer.json
file., (*7)
Register a converter command in console configuration, (*8)
'controllerMap' => [
'stack-converter' => 'dmstr\console\controllers\DockerStackConverterController'
],
Usage
Within a Yii 2.0 application
Once the extension is installed, use it on the command line:, (*9)
./yii yaml/convert-docker-compose \
--dockerComposeFile=@app/docker-compose.yml \
--templateDirectory=@app/build/stacks-tpl \
--outputDirectory=@app
Alternative alias, (*10)
./yii yaml/convert-docker-compose \
--dockerComposeFile=@root/docker-compose.yml \
--templateDirectory=@root/build/stacks-tpl \
--outputDirectory=@root
Via Docker image
You can run the converter for Docker stacks directly with Docker, from the phundament/app
Docker image, (*11)
docker run phundament/app ./yii help yaml/convert-docker-compose
After checking the options, we may mount i.e. tests
to /mnt
in the container and run the conversion process, (*12)
docker run -v `pwd`/tests:/mnt phundament/app ./yii yaml/convert-docker-compose \
--dockerComposeFile=/mnt/base.yml \
--templateDirectory=/mnt/stacks-tpl \
--templateReplacementsFile=/mnt/eny.yml \
--outputDirectory=/mnt/stacks-gen
Hint! You can check the installed version with docker run phundament/app composer show -i dmstr/yii2-yaml-converter-command
, (*13)
How it works?
docker-compose
converter
The conversion process follows the following simple ruleset, (*14)
- read
dockerComposeFile
as new base-file
- find
*.tpl.yml
files in templateDirectory
- read
templateReplacementsFile
and replace values in every template
- apply
.variable
rules (like CLEAN
)
- merge template with base-file and write new file to
outputDirectory
- if there's a subfolder with the same name as the template, recurse into that folder and repeat the process with the new file, just created in the last step
You can use .image: CLEAN
to remove the image
attribute of a service., (*15)