remove dinghy from docker_dev scripts

dinghy is deprecated so we are removing it from our docker setup
scripts, now defaulting to mutagen with docker desktop for mac.

flag = none
closes: DE-1099

Test Plan:
-Jenkins passes
-run docker_dev_setup from clean machine
  -setup uses mutagen with docker desktop on mac
  -setup uses mutagen with docker on linux
  -dinghy_http_proxy can still be used
-if dinghy machine found running, fail script with message

Change-Id: I1916c16807e7893174f32074674125cec93bcb40
Reviewed-on: https://gerrit.instructure.com/c/canvas-lms/+/287535
Tested-by: Service Cloud Jenkins <svc.cloudjenkins@instructure.com>
Reviewed-by: Andrea Cirulli <andrea.cirulli@instructure.com>
QA-Review: James Butters <jbutters@instructure.com>
Product-Review: James Butters <jbutters@instructure.com>
This commit is contained in:
James Butters 2022-03-21 06:45:12 -06:00
parent f4be7b34bb
commit 08965f67ca
9 changed files with 78 additions and 164 deletions

View File

@ -152,17 +152,21 @@ function copy_docker_config {
confirm_command 'cp docker-compose/config/*.yml config/' || true
}
function copy_mutagen_override {
message "Copying default configuration from docker-compose/mutagen/docker-compose.override.yml to docker-compose.override.yml"
cp docker-compose/mutagen/docker-compose.override.yml docker-compose.override.yml
}
function setup_docker_compose_override {
message 'Setup override yaml and .env...'
if is_mutagen; then
message "Copying default configuration from docker-compose/mutagen/docker-compose.override.yml to docker-compose.override.yml"
cp docker-compose/mutagen/docker-compose.override.yml docker-compose.override.yml
elif [ -f "docker-compose.override.yml" ]; then
message "docker-compose.override.yml exists, skipping copy of default configuration"
if [ -f "docker-compose.override.yml" ]; then
prompt 'docker-compose.override.yml already exists.
Would you like to copy docker-compose/mutagen/docker-compose.override.yml to docker-compose.override.yml? [y/n]' copy
[[ ${copy:-y} == 'n' ]] || copy_mutagen_override
else
message "Copying default configuration from config/docker-compose.override.yml.example to docker-compose.override.yml"
cp config/docker-compose.override.yml.example docker-compose.override.yml
copy_mutagen_override
fi
if [ -f ".env" ]; then
prompt '.env file exists, would you like to reset it to default? [y/n]' confirm
[[ ${confirm:-n} == 'y' ]] || return 0

View File

@ -2,15 +2,11 @@
source script/common/utils/common.sh
source script/common/os/linux/impl.sh
source script/common/utils/dory_setup.sh
dependencies='docker,docker-compose 1.20.0'
dependencies='docker,docker-compose 1.20.0,mutagen 0.13.0,mutagen-compose'
message "It looks like you're using Linux. Let's set that up."
if is_mutagen; then
dependencies+=',mutagen 0.13.0,mutagen-compose'
print_mutagen_intro
fi
print_mutagen_intro
set_service_util
check_dependencies
check_for_dory

View File

@ -1,9 +1,11 @@
#!/bin/bash
source script/common/utils/common.sh
source script/common/utils/dinghy_setup.sh
source script/common/utils/dinghy_proxy_setup.sh
source script/common/utils/dory_setup.sh
source script/common/utils/docker_desktop_setup.sh
dependencies='docker,docker-compose 1.20.0,mutagen 0.13.0,mutagen-compose'
function dory_or_dinghy() {
if $(installed dory) && $(! [[ "$(docker ps -aq --filter ancestor=codekitchen/dinghy-http-proxy)" == "" ]]); then
message 'Found both dory and dinghy_http_proxy!'
@ -26,18 +28,9 @@ function dory_or_dinghy() {
}
message "It looks like you're using a Mac. Let's set that up."
if is_mutagen; then
print_mutagen_intro
dependencies='docker,mutagen 0.13.0,mutagen-compose'
check_dependencies
check_for_docker_desktop
docker_running &> /dev/null || attempt_start_docker
check_docker_memory
dory_or_dinghy
else
dependencies='docker,docker-machine,docker-compose 1.20.0,dinghy'
check_dependencies
create_dinghy_vm
start_dinghy_vm
fi
print_mutagen_intro
check_dependencies
check_for_docker_desktop
docker_running &> /dev/null || attempt_start_docker
check_docker_memory
dory_or_dinghy

View File

@ -138,12 +138,13 @@ function confirm_command {
}
function docker_compose_up {
if is_mutagen; then
if ! is_running_on_jenkins; then
start_spinner "Starting mutagen containers..."
_canvas_lms_track_with_log mutagen-compose up --no-start web
_canvas_lms_track_with_log mutagen-compose run -u root --rm web chown docker:docker /usr/src/app
stop_spinner
fi
start_spinner "Starting docker containers..."
_canvas_lms_track_with_log $DOCKER_COMMAND up -d web
stop_spinner
@ -199,10 +200,6 @@ function rebuild_docker_images {
stop_spinner
}
function is_mutagen {
[ -f ".mutagen" ]
}
function is_docker {
[[ "${DOCKER:-}" == 'true' ]]
}

View File

@ -0,0 +1,32 @@
#!/bin/bash
source script/common/utils/common.sh
function setup_dinghy_proxy {
if [[ "$(docker ps -aq --filter ancestor=codekitchen/dinghy-http-proxy)" == "" ]]; then
docker run -d --restart=always \
-v /var/run/docker.sock:/tmp/docker.sock:ro \
-v ~/.dinghy/certs:/etc/nginx/certs \
-p 80:80 -p 443:443 -p 19322:19322/udp \
-e DNS_IP=127.0.0.1 -e CONTAINER_NAME=http-proxy \
--name http-proxy \
codekitchen/dinghy-http-proxy
sudo mkdir -p /etc/resolver
echo 'nameserver 127.0.0.1' | sudo tee /etc/resolver/docker > /dev/null
echo 'port 19322' | sudo tee -a /etc/resolver/docker > /dev/null
fi
}
function dinghy_machine_exists {
if installed dinghy; then
if ! dinghy status | grep -q 'not created'; then
warning_message "dinghy is no longer supported but was found installed!"
return 0
else
warning_message "dinghy found installed but no machine created.\nYou should probably uninstall dinghy to avoid conflicts in the future."
return 1
fi
fi
return 1
}

View File

@ -1,76 +0,0 @@
#!/bin/bash
source script/common/utils/common.sh
# Defaults
DINGHY_MEMORY='8192'
DINGHY_CPUS='4'
DINGHY_DISK='150'
DINGHY_DEPRECATION_MESSAGE="WARNING: Dinghy is currently deprecated, we suggest to use mutagen instead.
For further information check the confluence page: https://instructure.atlassian.net/wiki/spaces/CE/pages/4334256157/Canvas+LMS+docker+dev+Installation+Update"
function create_dinghy_vm {
warning_message $DINGHY_DEPRECATION_MESSAGE
if ! dinghy status | grep -q 'not created'; then
# make sure DOCKER_MACHINE_NAME is set
eval "$(dinghy env)"
existing_memory="$(docker-machine inspect --format "{{.Driver.Memory}}" "${DOCKER_MACHINE_NAME}")"
if [[ "$existing_memory" -lt "$DINGHY_MEMORY" ]]; then
echo "
Canvas requires at least 8GB of memory dedicated to the VM. Please recreate
your VM with a memory value of at least ${DINGHY_MEMORY}. For Example:
$ dinghy create --memory ${DINGHY_MEMORY}"
exit 1
else
message "Using existing dinghy VM..."
return 0
fi
fi
prompt 'OK to create a dinghy VM? [y/n]' confirm
[[ ${confirm:-n} == 'y' ]] || return 1
if ! installed VBoxManage; then
message 'Please install VirtualBox first!'
return 1
fi
prompt "How much memory should I allocate to the VM (in MB)? [$DINGHY_MEMORY]" memory
prompt "How many CPUs should I allocate to the VM? [$DINGHY_CPUS]" cpus
prompt "How big should the VM's disk be (in GB)? [$DINGHY_DISK]" disk
message "OK let's do this."
message "Creating dinghy machine..."
_canvas_lms_track_with_log dinghy create \
--provider=virtualbox \
--memory "${memory:-$DINGHY_MEMORY}" \
--cpus "${cpus:-$DINGHY_CPUS}" \
--disk "${disk:-$DINGHY_DISK}000"
}
function start_dinghy_vm {
if dinghy status | grep -q 'stopped'; then
message "Starting dinghy VM..."
_canvas_lms_track_with_log dinghy up
else
message 'Looks like the dinghy VM is already running. Moving on...'
fi
eval "$(dinghy env)"
}
function setup_dinghy_proxy {
if [[ "$(docker ps -aq --filter ancestor=codekitchen/dinghy-http-proxy)" == "" ]]; then
docker run -d --restart=always \
-v /var/run/docker.sock:/tmp/docker.sock:ro \
-v ~/.dinghy/certs:/etc/nginx/certs \
-p 80:80 -p 443:443 -p 19322:19322/udp \
-e DNS_IP=127.0.0.1 -e CONTAINER_NAME=http-proxy \
--name http-proxy \
codekitchen/dinghy-http-proxy
sudo mkdir -p /etc/resolver
echo 'nameserver 127.0.0.1' | sudo tee /etc/resolver/docker > /dev/null
echo 'port 19322' | sudo tee -a /etc/resolver/docker > /dev/null
fi
}

View File

@ -88,14 +88,6 @@ function print_missing_dependencies {
function display_next_steps {
message "You're good to go! Next steps:"
# shellcheck disable=SC2016
[[ $OS == 'Darwin' ]] && (! is_mutagen) && echo '
First, run:
eval "$(dinghy env)"
This will set up environment variables for docker to work with the dinghy VM.'
[[ $OS == 'Linux' ]] && echo '
I have added your user to the docker group so you can run docker commands
without sudo. Note that this has security implications:
@ -120,7 +112,7 @@ function display_next_steps {
echo ':docker-compose/selenium.override.yml' >> .env
build the selenium container
${DOCKER_COMMAND} build selenium-hub
${DOCKER_COMMAND} up -d selenium-hub
run selenium
${DOCKER_COMMAND} run --rm web bundle exec rspec spec/selenium

View File

@ -5,10 +5,13 @@ source script/common/canvas/build_helpers.sh
trap 'trap_result' ERR EXIT
trap "printf '\nTerminated\n' && exit 130" SIGINT
LOG="$(pwd)/log/docker_dev_setup.log"
SCRIPT_NAME="$0 $@"
OS="$(uname)"
DOCKER='true'
DOCKER_COMMAND="mutagen-compose"
CANVAS_SKIP_DOCKER_USERMOD='true'
_canvas_lms_opt_in_telemetry "$SCRIPT_NAME" "$LOG"
@ -17,43 +20,13 @@ if [[ "$USER" == 'root' ]]; then
echo "I'll ask for your sudo password if I need it."
exit 1
fi
# remove hidden file if already exists
rm .mutagen &> /dev/null || true
usage () {
echo "usage:"
printf " --mutagen\t\t\t\tUse Mutagen with Docker to setup development environment.\n"
printf " -h|--help\t\t\t\tDisplay usage\n\n"
}
die() {
echo "$*" 1>&2
usage
exit 1
}
while :; do
case $1 in
-h|-\?|--help)
usage # Display a usage synopsis.
exit
;;
--mutagen)
touch .mutagen
DOCKER_COMMAND="mutagen-compose"
CANVAS_SKIP_DOCKER_USERMOD='true'
;;
?*)
die 'ERROR: Unknown option: ' "$1" >&2
;;
*)
break
esac
shift
done
print_canvas_intro
if [[ $OS == 'Darwin' ]]; then
source script/common/utils/dinghy_proxy_setup.sh
dinghy_machine_exists && exit 1
fi
create_log_file
init_log_file "Docker Dev Setup"

View File

@ -4,13 +4,14 @@ set -e
source script/common/utils/common.sh
source script/common/canvas/build_helpers.sh
LOG="$(pwd)/log/docker_dev_update.log"
DOCKER='true'
SCRIPT_NAME=$0
trap trap_result EXIT
trap "printf '\nTerminated\n' && exit 130" SIGINT
LOG="$(pwd)/log/docker_dev_update.log"
DOCKER='true'
OS="$(uname)"
SCRIPT_NAME=$0
usage () {
echo "usage:"
printf " --update-code [skip-canvas] [skip-plugins [<plugin1>,...]\tRebase canvas-lms and plugins. Optional skip-canvas and\n"
@ -25,11 +26,9 @@ die () {
}
_canvas_lms_opt_in_telemetry "$SCRIPT_NAME" "$LOG"
if is_mutagen; then
DOCKER_COMMAND="mutagen-compose"
CANVAS_SKIP_DOCKER_USERMOD='true'
print_mutagen_intro
fi
DOCKER_COMMAND="mutagen-compose"
CANVAS_SKIP_DOCKER_USERMOD='true'
print_mutagen_intro
while :; do
case $1 in
@ -77,11 +76,15 @@ done
# check for docker daemon running before anything else
docker_running || exit 1
if [[ $OS == 'Darwin' ]]; then
source script/common/utils/dinghy_proxy_setup.sh
dinghy_machine_exists && exit 1
fi
if [ -f "docker-compose.override.yml" ]; then
echo "docker-compose.override.yml exists, skipping copy of default configuration"
else
echo "Copying default configuration from config/docker-compose.override.yml.example to docker-compose.override.yml"
cp config/docker-compose.override.yml.example docker-compose.override.yml
copy_mutagen_override
fi
if [[ -n "$UPDATE_CODE" ]] || [[ -n "$REBUILD_DOCKER" ]] && [[ "$(docker-compose top | wc -l)" -gt 0 ]]; then