revert automatically binding storage mounts in build phase. closes #2254
This commit is contained in:
@@ -41,6 +41,15 @@ Your app may be used in a cluster that requires containers or resources not runn
|
|||||||
|
|
||||||
Your app may have services that are running in memory and need to be backed up locally (like a key store). Mount a non ephemeral storage mount will allow backups that are not lost when the app is shut down.
|
Your app may have services that are running in memory and need to be backed up locally (like a key store). Mount a non ephemeral storage mount will allow backups that are not lost when the app is shut down.
|
||||||
|
|
||||||
|
### Build phase
|
||||||
|
|
||||||
|
By default, dokku will only bind storage mounts during the deploy and run phases. Under certain conditions, one might want to bind a storage mount during the build phase. This can be accomplished by using the `docker-options` plugin directly.
|
||||||
|
```
|
||||||
|
$ dokku docker-options:add <app> "-v /tmp/python-test:/opt/test"
|
||||||
|
```
|
||||||
|
|
||||||
|
NOTE: **This can cause data loss** if you bind a mount under `/app` in buildpack apps as herokuish will attempt to remove the original app path during the build phase.
|
||||||
|
|
||||||
## Docker-Options Note
|
## Docker-Options Note
|
||||||
|
|
||||||
The storage plugins is compatible with storage mounts created with the docker-options. The storage plugin will only list mounts from the deploy phase.
|
The storage plugins is compatible with storage mounts created with the docker-options. The storage plugin will only list mounts from the deploy phase.
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ source "$PLUGIN_CORE_AVAILABLE_PATH/docker-options/functions"
|
|||||||
storage_mount_cmd() {
|
storage_mount_cmd() {
|
||||||
declare desc="Add bind-mount, redeploy app if running"
|
declare desc="Add bind-mount, redeploy app if running"
|
||||||
local cmd="storage:mount"
|
local cmd="storage:mount"
|
||||||
local passed_phases=(build deploy run)
|
local passed_phases=(deploy run)
|
||||||
[[ -z $3 || $4 ]] && dokku_log_fail "storage:mount requires an app and a two paths divided by colon."
|
[[ -z $3 || $4 ]] && dokku_log_fail "storage:mount requires an app and a two paths divided by colon."
|
||||||
verify_app_name "$2" && local APP="$2"
|
verify_app_name "$2" && local APP="$2"
|
||||||
verify_paths "$3" && local MOUNT_PATH="$3"
|
verify_paths "$3" && local MOUNT_PATH="$3"
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ source "$PLUGIN_CORE_AVAILABLE_PATH/docker-options/functions"
|
|||||||
storage_unmount_cmd() {
|
storage_unmount_cmd() {
|
||||||
declare desc="Remove bind-mount, restart app if running"
|
declare desc="Remove bind-mount, restart app if running"
|
||||||
local cmd="storage:unmount"
|
local cmd="storage:unmount"
|
||||||
local passed_phases=(build deploy run)
|
local passed_phases=(deploy run)
|
||||||
[[ -z $3 || $4 ]] && dokku_log_fail "storage:unmount requires an app and a two paths divided by colon."
|
[[ -z $3 || $4 ]] && dokku_log_fail "storage:unmount requires an app and a two paths divided by colon."
|
||||||
verify_app_name "$2" && local APP="$2"
|
verify_app_name "$2" && local APP="$2"
|
||||||
verify_paths "$3" && local MOUNT_PATH="$3"
|
verify_paths "$3" && local MOUNT_PATH="$3"
|
||||||
|
|||||||
@@ -38,18 +38,3 @@ teardown() {
|
|||||||
assert_output "Mount path does not exist."
|
assert_output "Mount path does not exist."
|
||||||
assert_failure
|
assert_failure
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "(storage) storage:mount (dockerfile)" {
|
|
||||||
run /bin/bash -c "dokku storage:mount $TEST_APP /tmp/mount:/mount"
|
|
||||||
echo "output: "$output
|
|
||||||
echo "status: "$status
|
|
||||||
assert_success
|
|
||||||
|
|
||||||
deploy_app dockerfile
|
|
||||||
|
|
||||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
|
||||||
run /bin/bash -c "docker inspect -f '{{ .HostConfig.Binds }}' $CID"
|
|
||||||
echo "output: "$output
|
|
||||||
echo "status: "$status
|
|
||||||
assert_output "[/tmp/mount:/mount]"
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user