mirror of
https://github.com/shlinkio/shlink.git
synced 2024-11-29 17:39:03 +03:00
Updated config parsers for docker image to accept new mercure env vars and configs
This commit is contained in:
parent
8d888cb43d
commit
934fa937b5
4 changed files with 35 additions and 10 deletions
|
@ -121,8 +121,8 @@ If you do that, Shlink will publish updates and other clients can subscribe to t
|
||||||
|
|
||||||
There are three env vars you need to provide if you want to enable this:
|
There are three env vars you need to provide if you want to enable this:
|
||||||
|
|
||||||
* `MERCURE_HUB_PUBLIC_URL`: **[Mandatory]**. The public URL of a mercure hub server to which Shlink will sent updates. This URL will also be served to consumers that want to subscribe to those updates.
|
* `MERCURE_PUBLIC_HUB_URL`: **[Mandatory]**. The public URL of a mercure hub server to which Shlink will sent updates. This URL will also be served to consumers that want to subscribe to those updates.
|
||||||
* `MERCURE_HUB_INTERNAL_URL`: **[Optional]**. An internal URL for a mercure hub. Will be used only when publishing updates to mercure, and does not need to be public. If this is not provided, the `MERCURE_HUB_PUBLIC_URL` one will be used to publish updates.
|
* `MERCURE_INTERNAL_HUB_URL`: **[Optional]**. An internal URL for a mercure hub. Will be used only when publishing updates to mercure, and does not need to be public. If this is not provided, the `MERCURE_PUBLIC_HUB_URL` one will be used to publish updates.
|
||||||
* `MERCURE_JWT_SECRET`: **[Mandatory]**. The secret key that was provided to the mercure hub server, in order to be able to generate valid JWTs for publishing/subscribing to that server.
|
* `MERCURE_JWT_SECRET`: **[Mandatory]**. The secret key that was provided to the mercure hub server, in order to be able to generate valid JWTs for publishing/subscribing to that server.
|
||||||
|
|
||||||
So in order to run shlink with mercure integration, you would do it like this:
|
So in order to run shlink with mercure integration, you would do it like this:
|
||||||
|
@ -133,8 +133,8 @@ docker run \
|
||||||
-p 8080:8080 \
|
-p 8080:8080 \
|
||||||
-e SHORT_DOMAIN_HOST=doma.in \
|
-e SHORT_DOMAIN_HOST=doma.in \
|
||||||
-e SHORT_DOMAIN_SCHEMA=https \
|
-e SHORT_DOMAIN_SCHEMA=https \
|
||||||
-e "MERCURE_HUB_PUBLIC_URL=https://example.com"
|
-e "MERCURE_PUBLIC_HUB_URL=https://example.com"
|
||||||
-e "MERCURE_HUB_INTERNAL_URL=http://my-mercure-hub.prod.svc.cluster.local"
|
-e "MERCURE_INTERNAL_HUB_URL=http://my-mercure-hub.prod.svc.cluster.local"
|
||||||
-e MERCURE_JWT_SECRET=super_secret_key
|
-e MERCURE_JWT_SECRET=super_secret_key
|
||||||
shlinkio/shlink:stable
|
shlinkio/shlink:stable
|
||||||
```
|
```
|
||||||
|
@ -169,8 +169,8 @@ This is the complete list of supported env vars:
|
||||||
* `VISITS_WEBHOOKS`: A comma-separated list of URLs that will receive a `POST` request when a short URL receives a visit.
|
* `VISITS_WEBHOOKS`: A comma-separated list of URLs that will receive a `POST` request when a short URL receives a visit.
|
||||||
* `DEFAULT_SHORT_CODES_LENGTH`: The length you want generated short codes to have. It defaults to 5 and has to be at least 4, so any value smaller than that will fall back to 4.
|
* `DEFAULT_SHORT_CODES_LENGTH`: The length you want generated short codes to have. It defaults to 5 and has to be at least 4, so any value smaller than that will fall back to 4.
|
||||||
* `REDIS_SERVERS`: A comma-separated list of redis servers where Shlink locks are stored (locks are used to prevent some operations to be run more than once in parallel).
|
* `REDIS_SERVERS`: A comma-separated list of redis servers where Shlink locks are stored (locks are used to prevent some operations to be run more than once in parallel).
|
||||||
* `MERCURE_HUB_PUBLIC_URL`: The public URL of a mercure hub server to which Shlink will sent updates. This URL will also be served to consumers that want to subscribe to those updates.
|
* `MERCURE_PUBLIC_HUB_URL`: The public URL of a mercure hub server to which Shlink will sent updates. This URL will also be served to consumers that want to subscribe to those updates.
|
||||||
* `MERCURE_HUB_INTERNAL_URL`: An internal URL for a mercure hub. Will be used only when publishing updates to mercure, and does not need to be public. If this is not provided but `MERCURE_HUB_PUBLIC_URL` was, the former one will be used to publish updates.
|
* `MERCURE_INTERNAL_HUB_URL`: An internal URL for a mercure hub. Will be used only when publishing updates to mercure, and does not need to be public. If this is not provided but `MERCURE_PUBLIC_HUB_URL` was, the former one will be used to publish updates.
|
||||||
* `MERCURE_JWT_SECRET`: The secret key that was provided to the mercure hub server, in order to be able to generate valid JWTs for publishing/subscribing to that server.
|
* `MERCURE_JWT_SECRET`: The secret key that was provided to the mercure hub server, in order to be able to generate valid JWTs for publishing/subscribing to that server.
|
||||||
|
|
||||||
An example using all env vars could look like this:
|
An example using all env vars could look like this:
|
||||||
|
@ -199,8 +199,8 @@ docker run \
|
||||||
-e TASK_WORKER_NUM=32 \
|
-e TASK_WORKER_NUM=32 \
|
||||||
-e "VISITS_WEBHOOKS=http://my-api.com/api/v2.3/notify,https://third-party.io/foo" \
|
-e "VISITS_WEBHOOKS=http://my-api.com/api/v2.3/notify,https://third-party.io/foo" \
|
||||||
-e DEFAULT_SHORT_CODES_LENGTH=6 \
|
-e DEFAULT_SHORT_CODES_LENGTH=6 \
|
||||||
-e "MERCURE_HUB_PUBLIC_URL=https://example.com"
|
-e "MERCURE_PUBLIC_HUB_URL=https://example.com"
|
||||||
-e "MERCURE_HUB_INTERNAL_URL=http://my-mercure-hub.prod.svc.cluster.local"
|
-e "MERCURE_INTERNAL_HUB_URL=http://my-mercure-hub.prod.svc.cluster.local"
|
||||||
-e MERCURE_JWT_SECRET=super_secret_key
|
-e MERCURE_JWT_SECRET=super_secret_key
|
||||||
shlinkio/shlink:stable
|
shlinkio/shlink:stable
|
||||||
```
|
```
|
||||||
|
@ -243,8 +243,8 @@ The whole configuration should have this format, but it can be split into multip
|
||||||
"host": "something.rds.amazonaws.com",
|
"host": "something.rds.amazonaws.com",
|
||||||
"port": "3306"
|
"port": "3306"
|
||||||
},
|
},
|
||||||
"mercure_hub_public_url": "https://example.com",
|
"mercure_public_hub_url": "https://example.com",
|
||||||
"mercure_hub_internal_url": "http://my-mercure-hub.prod.svc.cluster.local",
|
"mercure_internal_hub_url": "http://my-mercure-hub.prod.svc.cluster.local",
|
||||||
"mercure_jwt_secret": "super_secret_key"
|
"mercure_jwt_secret": "super_secret_key"
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
|
@ -79,6 +79,17 @@ $helper = new class {
|
||||||
$value = (int) env('DEFAULT_SHORT_CODES_LENGTH', DEFAULT_SHORT_CODES_LENGTH);
|
$value = (int) env('DEFAULT_SHORT_CODES_LENGTH', DEFAULT_SHORT_CODES_LENGTH);
|
||||||
return $value < MIN_SHORT_CODES_LENGTH ? MIN_SHORT_CODES_LENGTH : $value;
|
return $value < MIN_SHORT_CODES_LENGTH ? MIN_SHORT_CODES_LENGTH : $value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getMercureConfig(): array
|
||||||
|
{
|
||||||
|
$publicUrl = env('MERCURE_PUBLIC_HUB_URL');
|
||||||
|
|
||||||
|
return [
|
||||||
|
'public_hub_url' => $publicUrl,
|
||||||
|
'internal_hub_url' => env('MERCURE_INTERNAL_HUB_URL', $publicUrl),
|
||||||
|
'jwt_secret' => env('MERCURE_JWT_SECRET'),
|
||||||
|
];
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
return [
|
return [
|
||||||
|
@ -147,4 +158,6 @@ return [
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'mercure' => $helper->getMercureConfig(),
|
||||||
|
|
||||||
];
|
];
|
||||||
|
|
|
@ -33,6 +33,9 @@ class SimplifiedConfigParser
|
||||||
'task_worker_num' => ['mezzio-swoole', 'swoole-http-server', 'options', 'task_worker_num'],
|
'task_worker_num' => ['mezzio-swoole', 'swoole-http-server', 'options', 'task_worker_num'],
|
||||||
'visits_webhooks' => ['url_shortener', 'visits_webhooks'],
|
'visits_webhooks' => ['url_shortener', 'visits_webhooks'],
|
||||||
'default_short_codes_length' => ['url_shortener', 'default_short_codes_length'],
|
'default_short_codes_length' => ['url_shortener', 'default_short_codes_length'],
|
||||||
|
'mercure_public_hub_url' => ['mercure', 'public_hub_url'],
|
||||||
|
'mercure_internal_hub_url' => ['mercure', 'internal_hub_url'],
|
||||||
|
'mercure_jwt_secret' => ['mercure', 'jwt_secret'],
|
||||||
];
|
];
|
||||||
private const SIMPLIFIED_CONFIG_SIDE_EFFECTS = [
|
private const SIMPLIFIED_CONFIG_SIDE_EFFECTS = [
|
||||||
'delete_short_url_threshold' => [
|
'delete_short_url_threshold' => [
|
||||||
|
|
|
@ -60,6 +60,9 @@ class SimplifiedConfigParserTest extends TestCase
|
||||||
'https://third-party.io/foo',
|
'https://third-party.io/foo',
|
||||||
],
|
],
|
||||||
'default_short_codes_length' => 8,
|
'default_short_codes_length' => 8,
|
||||||
|
'mercure_public_hub_url' => 'public_url',
|
||||||
|
'mercure_internal_hub_url' => 'internal_url',
|
||||||
|
'mercure_jwt_secret' => 'super_secret_value',
|
||||||
];
|
];
|
||||||
$expected = [
|
$expected = [
|
||||||
'app_options' => [
|
'app_options' => [
|
||||||
|
@ -127,6 +130,12 @@ class SimplifiedConfigParserTest extends TestCase
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
],
|
],
|
||||||
|
|
||||||
|
'mercure' => [
|
||||||
|
'public_hub_url' => 'public_url',
|
||||||
|
'internal_hub_url' => 'internal_url',
|
||||||
|
'jwt_secret' => 'super_secret_value',
|
||||||
|
],
|
||||||
];
|
];
|
||||||
|
|
||||||
$result = ($this->postProcessor)(array_merge($config, $simplified));
|
$result = ($this->postProcessor)(array_merge($config, $simplified));
|
||||||
|
|
Loading…
Reference in a new issue