Merge pull request #2297 from dokku/override-image-repo
Override image repo
This commit is contained in:
@@ -177,6 +177,23 @@ set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|||||||
echo 'not-latest'
|
echo 'not-latest'
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### `deployed-app-image-repo`
|
||||||
|
|
||||||
|
- Description: Used to manage the full repo of the image being deployed. Useful for deploying from an external registry where the repository name is not `dokku/$APP`
|
||||||
|
- Invoked by: `internal function dokku_deploy_cmd() (deploy phase)`
|
||||||
|
- Arguments: `$APP`
|
||||||
|
- Example:
|
||||||
|
|
||||||
|
```shell
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
APP="$1"
|
||||||
|
# change the repo from dokku/APP to dokkupaas/APP
|
||||||
|
echo "dokkupaas/$APP"
|
||||||
|
```
|
||||||
|
|
||||||
### `deployed-app-repository`
|
### `deployed-app-repository`
|
||||||
|
|
||||||
- Description: Used to manage the remote repository of the image being deployed.
|
- Description: Used to manage the remote repository of the image being deployed.
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ get_phase_script() {
|
|||||||
|
|
||||||
execute_script() {
|
execute_script() {
|
||||||
declare desc="executes appropriate phase script key from app.json"
|
declare desc="executes appropriate phase script key from app.json"
|
||||||
local APP="$1"; local IMAGE_TAG="$2"; local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
local APP="$1"; local IMAGE_TAG="$2"; local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG")
|
||||||
local PHASE_SCRIPT_KEY="$3"
|
local PHASE_SCRIPT_KEY="$3"
|
||||||
local SCRIPT_CMD=$(get_phase_script "$IMAGE" "$PHASE_SCRIPT_KEY" 2>/dev/null)
|
local SCRIPT_CMD=$(get_phase_script "$IMAGE" "$PHASE_SCRIPT_KEY" 2>/dev/null)
|
||||||
if [[ -n "$SCRIPT_CMD" ]];then
|
if [[ -n "$SCRIPT_CMD" ]];then
|
||||||
@@ -49,6 +49,8 @@ execute_script() {
|
|||||||
COMMAND+=" fi "
|
COMMAND+=" fi "
|
||||||
|
|
||||||
local CACHE_DIR="$DOKKU_ROOT/$APP/cache"
|
local CACHE_DIR="$DOKKU_ROOT/$APP/cache"
|
||||||
|
[[ -d $CACHE_DIR ]] || mkdir -p "$CACHE_DIR"
|
||||||
|
|
||||||
local DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG")
|
local DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG")
|
||||||
# strip --restart args from DOCKER_ARGS
|
# strip --restart args from DOCKER_ARGS
|
||||||
local DOCKER_ARGS=$(sed -e "s/--restart=[[:graph:]]\+[[:blank:]]\?//g" <<< "$DOCKER_ARGS")
|
local DOCKER_ARGS=$(sed -e "s/--restart=[[:graph:]]\+[[:blank:]]\?//g" <<< "$DOCKER_ARGS")
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ dokku_run_cmd() {
|
|||||||
declare desc="runs command in container based on app image"
|
declare desc="runs command in container based on app image"
|
||||||
local cmd="run"
|
local cmd="run"
|
||||||
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
|
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
|
||||||
local APP="$2"; local IMAGE_TAG=$(get_running_image_tag "$APP"); local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
local APP="$2"; local IMAGE_TAG=$(get_running_image_tag "$APP"); local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG")
|
||||||
verify_app_name "$APP"
|
verify_app_name "$APP"
|
||||||
|
|
||||||
shift 2
|
shift 2
|
||||||
|
|||||||
1
plugins/20_events/deployed-app-image-repo
Symbolic link
1
plugins/20_events/deployed-app-image-repo
Symbolic link
@@ -0,0 +1 @@
|
|||||||
|
hook
|
||||||
@@ -172,14 +172,20 @@ get_deploying_app_image_name() {
|
|||||||
local APP="$1"; local IMAGE_TAG="$2";
|
local APP="$1"; local IMAGE_TAG="$2";
|
||||||
[[ -z "$APP" ]] && dokku_log_fail "(get_app_image_name) APP must not be null"
|
[[ -z "$APP" ]] && dokku_log_fail "(get_app_image_name) APP must not be null"
|
||||||
|
|
||||||
|
local IMAGE_REPO=""
|
||||||
local IMAGE_REMOTE_REPOSITORY=$(plugn trigger deployed-app-repository "$APP")
|
local IMAGE_REMOTE_REPOSITORY=$(plugn trigger deployed-app-repository "$APP")
|
||||||
local NEW_IMAGE_TAG=$(plugn trigger deployed-app-image-tag "$APP")
|
local NEW_IMAGE_TAG=$(plugn trigger deployed-app-image-tag "$APP")
|
||||||
|
local NEW_IMAGE_REPO=$(plugn trigger deployed-app-image-repo "$APP")
|
||||||
|
|
||||||
if [[ -n "$NEW_IMAGE_TAG" ]]; then
|
if [[ -n "$NEW_IMAGE_TAG" ]]; then
|
||||||
IMAGE_TAG="$NEW_IMAGE_TAG"
|
IMAGE_TAG="$NEW_IMAGE_TAG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
if [[ -n "$NEW_IMAGE_REPO" ]]; then
|
||||||
|
IMAGE_REPO="$NEW_IMAGE_REPO"
|
||||||
|
fi
|
||||||
|
|
||||||
|
local IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG" "$IMAGE_REPO")
|
||||||
if [[ -n "$IMAGE_REMOTE_REPOSITORY" ]]; then
|
if [[ -n "$IMAGE_REMOTE_REPOSITORY" ]]; then
|
||||||
IMAGE="${IMAGE_REMOTE_REPOSITORY}${IMAGE}"
|
IMAGE="${IMAGE_REMOTE_REPOSITORY}${IMAGE}"
|
||||||
fi
|
fi
|
||||||
@@ -188,9 +194,13 @@ get_deploying_app_image_name() {
|
|||||||
|
|
||||||
get_app_image_name() {
|
get_app_image_name() {
|
||||||
declare desc="return image identifier for a given app, tag tuple. validate if tag is presented"
|
declare desc="return image identifier for a given app, tag tuple. validate if tag is presented"
|
||||||
local APP="$1"; local IMAGE_TAG="$2"; local IMAGE_REPO=$(get_app_image_repo "$APP")
|
local APP="$1"; local IMAGE_TAG="$2"; IMAGE_REPO="$3"
|
||||||
[[ -z "$APP" ]] && dokku_log_fail "(get_app_image_name) APP must not be null"
|
[[ -z "$APP" ]] && dokku_log_fail "(get_app_image_name) APP must not be null"
|
||||||
|
|
||||||
|
if [[ -z "$IMAGE_REPO" ]]; then
|
||||||
|
IMAGE_REPO=$(get_app_image_repo "$APP")
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -n "$IMAGE_TAG" ]]; then
|
if [[ -n "$IMAGE_TAG" ]]; then
|
||||||
local IMAGE="$IMAGE_REPO:$IMAGE_TAG"
|
local IMAGE="$IMAGE_REPO:$IMAGE_TAG"
|
||||||
verify_image "$IMAGE" || dokku_log_fail "app image ($IMAGE) not found"
|
verify_image "$IMAGE" || dokku_log_fail "app image ($IMAGE) not found"
|
||||||
|
|||||||
Reference in New Issue
Block a user