revert automatically binding storage mounts in build phase. closes #2254

This commit is contained in:
Michael Hobbs
2016-06-20 11:39:08 -07:00
parent ed06b8961e
commit aa345fad01
4 changed files with 11 additions and 17 deletions

View File

@@ -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.

View File

@@ -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"

View File

@@ -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"

View File

@@ -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]"
}