diff --git a/functions b/functions index 7480ca3..fa2bc93 100755 --- a/functions +++ b/functions @@ -85,6 +85,8 @@ service_create_container() { export CONFIG_OPTIONS="$(cat "$SERVICE_ROOT/CONFIG_OPTIONS")" fi + local network_alias="$(service_dns_hostname "$SERVICE")" + rm -f "$SERVICE_ROOT/ID" declare -a DOCKER_ARGS DOCKER_ARGS=() @@ -94,7 +96,7 @@ service_create_container() { DOCKER_ARGS+=("--env=MYSQL_PASSWORD=$PASSWORD") DOCKER_ARGS+=("--env=MYSQL_ROOT_PASSWORD=$ROOTPASSWORD") DOCKER_ARGS+=("--env=MYSQL_USER=mysql") - DOCKER_ARGS+=("--hostname=$SERVICE") + DOCKER_ARGS+=("--hostname=$SERVICE_NAME") DOCKER_ARGS+=("--label=dokku.service=$PLUGIN_COMMAND_PREFIX") DOCKER_ARGS+=("--label=dokku=service") DOCKER_ARGS+=("--name=$SERVICE_NAME") @@ -106,7 +108,7 @@ service_create_container() { LINK_CONTAINER_DOCKER_ARGS=() LINK_CONTAINER_DOCKER_ARGS+=("--rm") LINK_CONTAINER_DOCKER_ARGS+=("--link") - LINK_CONTAINER_DOCKER_ARGS+=("$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX") + LINK_CONTAINER_DOCKER_ARGS+=("$SERVICE_NAME:$network_alias") [[ -f "$SERVICE_ROOT/SERVICE_MEMORY" ]] && SERVICE_MEMORY="$(cat "$SERVICE_ROOT/SERVICE_MEMORY")" if [[ -n "$SERVICE_MEMORY" ]]; then @@ -124,7 +126,7 @@ service_create_container() { local network="$(fn-plugin-property-get "$PLUGIN_COMMAND_PREFIX" "$SERVICE" "initial-network")" if [[ -n "$network" ]]; then DOCKER_ARGS+=("--network=${network}") - DOCKER_ARGS+=("--network-alias=$SERVICE_NAME") + DOCKER_ARGS+=("--network-alias=${network_alias}") LINK_CONTAINER_DOCKER_ARGS+=("--network=${network}") fi @@ -135,7 +137,7 @@ service_create_container() { dokku_log_verbose_quiet "Connecting to networks after container create" while read -r line || [[ -n "$line" ]]; do dokku_log_verbose_quiet "- $line" - "$DOCKER_BIN" network connect --alias "$SERVICE_NAME" "$line" "$SERVICE_NAME" + "$DOCKER_BIN" network connect --alias "$network_alias" "$line" "$SERVICE_NAME" done < <(fn-plugin-property-get "$PLUGIN_COMMAND_PREFIX" "$SERVICE" "post-create-network" | tr "," "\n") fi suppress_output "$DOCKER_BIN" container start "$(cat "$SERVICE_ROOT/ID")" @@ -143,12 +145,12 @@ service_create_container() { dokku_log_verbose_quiet "Connecting to networks after container start" while read -r line || [[ -n "$line" ]]; do dokku_log_verbose_quiet "- $line" - "$DOCKER_BIN" network connect --alias "$SERVICE_NAME" "$line" "$SERVICE_NAME" + "$DOCKER_BIN" network connect --alias "$network_alias" "$line" "$SERVICE_NAME" done < <(fn-plugin-property-get "$PLUGIN_COMMAND_PREFIX" "$SERVICE" "post-start-network" | tr "," "\n") fi dokku_log_verbose_quiet "Waiting for container to be ready" - if ! suppress_output "$DOCKER_BIN" container run "${LINK_CONTAINER_DOCKER_ARGS[@]}" "$PLUGIN_WAIT_IMAGE" -c "$SERVICE_NAME:$PLUGIN_DATASTORE_WAIT_PORT"; then + if ! suppress_output "$DOCKER_BIN" container run "${LINK_CONTAINER_DOCKER_ARGS[@]}" "$PLUGIN_WAIT_IMAGE" -c "$network_alias:$PLUGIN_DATASTORE_WAIT_PORT"; then dokku_log_info2_quiet "Start of $SERVICE container output" dokku_container_log_verbose_quiet "$SERVICE_NAME" dokku_log_info2_quiet "End of $SERVICE container output" diff --git a/tests/link_networks.bats b/tests/link_networks.bats index 6c1ffd8..f75dfbe 100755 --- a/tests/link_networks.bats +++ b/tests/link_networks.bats @@ -48,6 +48,13 @@ teardown() { assert_output_contains bridge 0 assert_output_contains custom-network + run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}' + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "alias:dokku.$PLUGIN_COMMAND_PREFIX.ls" + assert_output_contains "alias:dokku-$PLUGIN_COMMAND_PREFIX-ls" + run dokku "$PLUGIN_COMMAND_PREFIX:set" ls initial-network echo "output: $output" echo "status: $status" @@ -113,6 +120,13 @@ teardown() { assert_output_contains custom-network assert_output_contains bridge + run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}' + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "alias:dokku.$PLUGIN_COMMAND_PREFIX.ls" + assert_output_contains "alias:dokku-$PLUGIN_COMMAND_PREFIX-ls" + run dokku "$PLUGIN_COMMAND_PREFIX:set" ls post-create-network echo "output: $output" echo "status: $status" @@ -178,6 +192,13 @@ teardown() { assert_output_contains bridge assert_output_contains custom-network + run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.ls -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}' + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "alias:dokku.$PLUGIN_COMMAND_PREFIX.ls" + assert_output_contains "alias:dokku-$PLUGIN_COMMAND_PREFIX-ls" + run dokku "$PLUGIN_COMMAND_PREFIX:set" ls post-start-network echo "output: $output" echo "status: $status" @@ -237,6 +258,13 @@ teardown() { assert_output_contains bridge assert_output_contains custom-network + run docker inspect dokku.$PLUGIN_COMMAND_PREFIX.lsa -f '{{range $net,$v := .NetworkSettings.Networks}}{{range $k,$alias := $v.Aliases}}{{printf "alias:%s\n" $alias}}{{end}}{{end}}' + echo "output: $output" + echo "status: $status" + assert_success + assert_output_contains "alias:dokku.$PLUGIN_COMMAND_PREFIX.lsa" + assert_output_contains "alias:dokku-$PLUGIN_COMMAND_PREFIX-lsa" + run dokku "$PLUGIN_COMMAND_PREFIX:destroy" lsa --force echo "output: $output" echo "status: $status"