Skip to content

Commit

Permalink
Merge pull request #56 from silinternational/feature/appconfig
Browse files Browse the repository at this point in the history
add AppConfig
  • Loading branch information
briskt authored Mar 28, 2024
2 parents d255994 + 0265a69 commit ee50a71
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 4 deletions.
3 changes: 3 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@ COPY dockerbuild/vhost.conf /etc/apache2/sites-enabled/
# ErrorLog inside a VirtualHost block is ineffective for unknown reasons
RUN sed -i -E 's@ErrorLog .*@ErrorLog /proc/self/fd/2@i' /etc/apache2/apache2.conf

ADD https://github.com/silinternational/config-shim/releases/latest/download/config-shim.gz config-shim.gz
RUN gzip -d config-shim.gz && chmod 755 config-shim && mv config-shim /usr/local/bin

EXPOSE 80

CMD ["/data/run.sh"]
20 changes: 20 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,26 @@ Simple service to queue and send emails
2. `make`
3. Upon successful initialization, the API will be available locally at `http://localhost:8080/email`

## Configuration
By default, configuration is read from environment variables. These are documented
in the `local.env.dist` file. Optionally, you can define configuration in AWS AppConfig.
To do this, set the following environment variables to point to the configuration in
AWS:

* `AWS_REGION` - the AWS region in use
* `APP_ID` - the application ID or name
* `CONFIG_ID` - the configuration profile ID or name
* `ENV_ID` - the environment ID or name

In addition, the AWS API requires authentication. It is best to use an access role
such as an [ECS Task Role](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html).
If that is not an option, you can specify an access token using the `AWS_ACCESS_KEY_ID` and
`AWS_SECRET_ACCESS_KEY` variables.

The content of the configuration profile takes the form of a typical .env file, using
`#` for comments and `=` for variable assignment. Any variables read from AppConfig
will overwrite variables set in the execution environment.

## API
See [api.raml](api.raml) for API docs.

Expand Down
3 changes: 2 additions & 1 deletion application/common/config/main.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
$mysqlDatabase = Env::requireEnv('MYSQL_DATABASE');
$mysqlUser = Env::requireEnv('MYSQL_USER');
$mysqlPassword = Env::requireEnv('MYSQL_PASSWORD');
$notificationEmail = Env::requireEnv('NOTIFICATION_EMAIL');
$notificationEmail = Env::get('NOTIFICATION_EMAIL');

$emailQueueBatchSize = Env::get('EMAIL_QUEUE_BATCH_SIZE', 10);
$mailerUseFiles = Env::get('MAILER_USEFILES', false);
Expand Down Expand Up @@ -71,6 +71,7 @@
'exportInterval' => 1,
],
[
'enabled' => !empty($notificationEmail),
'class' => EmailTarget::class,
'except' => [
'yii\web\HttpException:400',
Expand Down
7 changes: 5 additions & 2 deletions application/run-cron.sh
Original file line number Diff line number Diff line change
Expand Up @@ -35,5 +35,8 @@ if [[ $rc != 0 ]]; then
fi

# Run apache in foreground
apache2ctl -D FOREGROUND

if [[ -z "${APP_ID}" ]]; then
apache2ctl -k start -D FOREGROUND
else
config-shim --app $APP_ID --config $CONFIG_ID --env $ENV_ID apache2ctl -k start -D FOREGROUND
fi
6 changes: 5 additions & 1 deletion application/run.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,8 @@
#!/usr/bin/env bash

# Run apache in foreground
apache2ctl -D FOREGROUND
if [[ -z "${APP_ID}" ]]; then
apache2ctl -k start -D FOREGROUND
else
config-shim --app $APP_ID --config $CONFIG_ID --env $ENV_ID apache2ctl -k start -D FOREGROUND
fi
16 changes: 16 additions & 0 deletions local.env.dist
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,22 @@ API_ACCESS_KEYS=abc123

APP_NAME=email-service


# === AWS AppConfig (optional) ===

# The AWS region in use
#AWS_REGION=

# The AppConfig Application ID (or name)
#APP_ID=

# The AppConfig Configuration Profile ID (or name)
#CONFIG_ID=

# The AppConfig Environment ID (or name)
#ENV_ID=


# mailer configuration for SMTP
MAILER_HOST=
MAILER_USERNAME=
Expand Down

0 comments on commit ee50a71

Please sign in to comment.