setono / deployer-dotenv
Easily update your .env files when deploying
Installs: 19 440
Dependents: 0
Suggesters: 0
Security: 0
Stars: 9
Watchers: 3
Forks: 0
Open Issues: 1
Requires
- php: >=8.1
- deployer/deployer: ^7.4
- symfony/console: ^6.4 || ^7.0
- symfony/dotenv: ^6.4 || ^7.0
- webmozart/assert: ^1.11
Requires (Dev)
- phpseclib/phpseclib: ^3.0
- phpunit/phpunit: ^10.5
- setono/code-quality-pack: ^2.8.3
- shipmonk/composer-dependency-analyser: ^1.7
- symfony/flex: ^2.4
README
If you use Deployer as your deployment tool
and .env
files to handle environment variables (i.e. Symfony) this library is for you.
Are you still accessing your server to update environment variables manually after a deployment? We also did that and that's the main reason why we built this library.
Now we have a very specific, but simple, strategy for updating the .env
files during deployment:
-
We do not share the
.env.local.php
,.env.local
files as is the default by Deployer. Instead, we have a.env.[stage].local
and.env.local.php
in each release folder. -
When deploying we copy the
.env.[stage].local
file from the previous release (if there was a previous release, else we create it). -
If you are deploying interactively (i.e. manually) you are presented with a dialog asking if you want to update any environment variables.
-
Finally, we run
composer symfony:dump-env [stage]
to generate the.env.local.php
file for the current release.
Installation
composer require setono/deployer-dotenv
Usage
In your deploy.php
file require the recipe:
<?php namespace Deployer; require_once 'recipe/setono_dotenv.php'; // ...
This will automatically hook into the default flow of Deployer.
Testing
-
Set correct permissions on the SSH keys:
chmod 600 tests/docker/ssh/id_rsa && chmod 644 tests/docker/ssh/id_rsa.pub
-
Build the Docker image:
docker build -t setono/deployer-dotenv --no-cache ./tests/docker
-
Run the Docker container:
docker run -d -p 2222:22 setono/deployer-dotenv
-
Run the tests:
vendor/bin/phpunit