diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 index ef1ede11e0..15eb5bb69c --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ .DEFAULT_GOAL := help .PHONY: requirements -DEVSTACK_WORKSPACE ?= $(shell pwd)/.. +export DEVSTACK_WORKSPACE=$(abspath ../) include .env OS := $(shell uname) @@ -52,7 +52,7 @@ endif export DOCKER_COMPOSE_FILES -export DEVSTACK_WORKSPACE +#export DEVSTACK_WORKSPACE export COMPOSE_PROJECT_NAME include *.mk @@ -80,6 +80,7 @@ dev.checkout: ## Check out "masters" otherwise ./repo.sh checkout dev.clone: ## Clone service repos to the parent directory + @echo "DEVSTACK_WORKSPACE ${DEVSTACK_WORKSPACE}" ./repo.sh clone dev.provision.run: ## Provision all services with local mounted directories @@ -107,7 +108,7 @@ dev.editable-envs: ## Copy env files outside the docker containers so it's edit @make studio-restart dev.up: | check-memory ## Bring up all services with host volumes - docker-compose ${DOCKER_COMPOSE_FILES} up -d + docker compose ${DOCKER_COMPOSE_FILES} up -d edraak.dev.up.hacks: @# Start: Edraak hacks @@ -126,25 +127,25 @@ provision: | dev.provision stop: ## Stop all services (test -d .docker-sync && docker-sync stop) || true ## Ignore failure here - docker-compose ${DOCKER_COMPOSE_FILES} stop + docker compose ${DOCKER_COMPOSE_FILES} stop down: ## Remove all service containers and networks - docker-compose ${DOCKER_COMPOSE_FILES} down + docker compose ${DOCKER_COMPOSE_FILES} down destroy: ## Remove all devstack-related containers, networks, and volumes ./destroy.sh logs: ## View logs from containers running in detached mode - docker-compose ${DOCKER_COMPOSE_FILES} logs -f --tail 10 + docker compose ${DOCKER_COMPOSE_FILES} logs -f --tail 10 %-logs: ## View the logs of the specified service container - docker-compose ${DOCKER_COMPOSE_FILES} logs -f --tail=500 $* + docker compose ${DOCKER_COMPOSE_FILES} logs -f --tail=500 $* pull: - docker-compose ${DOCKER_COMPOSE_FILES} pull --parallel + docker compose ${DOCKER_COMPOSE_FILES} pull validate: ## Validate the devstack configuration - docker-compose ${DOCKER_COMPOSE_FILES} config + docker compose ${DOCKER_COMPOSE_FILES} config backup: ## Write all data volumes to the host. docker run --rm --volumes-from edx.devstack.mysql -v $$(pwd)/.dev/backups:/backup debian:jessie tar zcvf /backup/mysql.tar.gz /var/lib/mysql @@ -161,7 +162,7 @@ restore: ## Restore all data volumes from the host. WARNING: THIS WILL OVERWRIT # TODO: Print out help for this target. Even better if we can iterate over the -# services in docker-compose.yml, and print the actual service names. +# services in docker compose.yml, and print the actual service names. %-shell: ## Run a shell on the specified service container docker exec -it edx.devstack.$* /bin/bash @@ -249,39 +250,39 @@ vnc-passwords: ## Get the VNC passwords for the Chrome and Firefox Selenium cont @docker logs edx.devstack.firefox 2>&1 | grep "VNC password" | tail -1 devpi-password: ## Get the root devpi password for the devpi container - docker-compose exec devpi bash -c "cat /data/server/.serverpassword" + docker compose exec devpi bash -c "cat /data/server/.serverpassword" mysql-shell: ## Run a shell on the mysql container - docker-compose exec mysql bash + docker compose exec mysql bash mysql-shell-edxapp: ## Run a mysql shell on the edxapp database - docker-compose exec mysql bash -c "mysql edxapp" + docker compose exec mysql bash -c "mysql edxapp" mongo-shell: ## Run a shell on the mongo container - docker-compose exec mongo bash + docker compose exec mongo bash ### analytics pipeline commands dev.provision.analytics_pipeline: | check-memory dev.provision.analytics_pipeline.run stop.analytics_pipeline stop ## Provision analyticstack dev environment with all services stopped dev.provision.analytics_pipeline.run: - DOCKER_COMPOSE_FILES="-f docker-compose.yml -f docker-compose-host.yml -f docker-compose-analytics-pipeline.yml" ./provision-analytics-pipeline.sh + DOCKER_COMPOSE_FILES="-f docker compose.yml -f docker compose-host.yml -f docker compose-analytics-pipeline.yml" ./provision-analytics-pipeline.sh analytics-pipeline-shell: ## Run a shell on the analytics pipeline container docker exec -it edx.devstack.analytics_pipeline env TERM=$(TERM) /edx/app/analytics_pipeline/devstack.sh open dev.up.analytics_pipeline: | check-memory ## Bring up analytics pipeline services - docker-compose -f docker-compose.yml -f docker-compose-analytics-pipeline.yml -f docker-compose-host.yml up -d analyticspipeline + docker compose -f docker compose.yml -f docker compose-analytics-pipeline.yml -f docker compose-host.yml up -d analyticspipeline pull.analytics_pipeline: ## Update analytics pipeline docker images - docker-compose -f docker-compose.yml -f docker-compose-analytics-pipeline.yml pull --parallel + docker compose -f docker compose.yml -f docker compose-analytics-pipeline.yml pull --parallel analytics-pipeline-devstack-test: ## Run analytics pipeline tests in travis build docker exec -u hadoop -i edx.devstack.analytics_pipeline bash -c 'sudo chown -R hadoop:hadoop /edx/app/analytics_pipeline && source /edx/app/hadoop/.bashrc && make develop-local && make docker-test-acceptance-local ONLY_TESTS=edx.analytics.tasks.tests.acceptance.test_internal_reporting_database && make docker-test-acceptance-local ONLY_TESTS=edx.analytics.tasks.tests.acceptance.test_user_activity' stop.analytics_pipeline: ## Stop analytics pipeline services - docker-compose -f docker-compose.yml -f docker-compose-analytics-pipeline.yml stop - docker-compose up -d mysql ## restart mysql as other containers need it + docker compose -f docker compose.yml -f docker compose-analytics-pipeline.yml stop + docker compose up -d mysql ## restart mysql as other containers need it hadoop-application-logs-%: ## View hadoop logs by application Id docker exec -it edx.devstack.analytics_pipeline.nodemanager yarn logs -applicationId $* diff --git a/README.rst b/README.rst index ba8ec816af..d35c3ba013 100644 --- a/README.rst +++ b/README.rst @@ -115,7 +115,26 @@ sure you have the needed permission. gcloud auth login gcloud auth configure-docker -5. Run the provision command, if you haven't already, to configure the various +5. Clean up any Docker artifacts (containers, images, and volumes) to ensure a + fresh start. + + .. code:: sh + + docker system prune -a + + .. note:: + + The prune command removes all stopped containers, unused networks, + dangling images, and build cache. Review Docker's documentation if you + need to keep specific resources. + +6. Pull the required images. + + .. code:: sh + + make pull + +7. Run the provision command, if you haven't already, to configure the various services with superusers (for development without the auth service) and tenants (for multi-tenancy). @@ -132,7 +151,19 @@ sure you have the needed permission. make dev.provision -6. Start the services. This command will mount the repositories under the + .. note:: + + The first run of ``make dev.provision`` is expected to fail. After the + initial failure, update ``.env`` to disable EDX, then rerun the provision + command. When the migration finishes, stop any running containers before + starting the development stack again. + + .. code:: sh + + make dev.provision + make stop + +8. Start the services. This command will mount the repositories under the DEVSTACK\_WORKSPACE directory. **NOTE:** it may take up to 60 seconds for the LMS to start, even after the ``make dev.up`` command outputs ``done``. @@ -146,6 +177,31 @@ sure you have the needed permission. # .env file content +When copying the ``.env`` file for a fresh setup, it should resemble the +configuration below. Adjust service flags as needed—particularly +``ENABLE_EDX`` if you need to disable the service after the first migration +attempt. + +.. code:: sh + + ## env ## + PROGS_CFG=/app/docker.json + + # Change mount type to "-nfs" to enable nfs, otherwise leave it empty + MOUNT_TYPE= + + # Enable disable services + ENABLE_PROGS=true + ENABLE_B2B=false + ENABLE_MKTG=true + ENABLE_EDX=true + + ENABLE_STATE_MANAGER=false + ENABLE_JUDGE=false + ENABLE_ANALYTICS=false + ENABLE_AUTH=true + ENABLE_NOTIFIER=false + MOUNT_TYPE: set to -nfs to enable NFS support or leave empty to use default docker engine diff --git a/course-generator/create-courses.sh b/course-generator/create-courses.sh index eea96f6589..16b76b2390 100755 --- a/course-generator/create-courses.sh +++ b/course-generator/create-courses.sh @@ -8,7 +8,7 @@ echo "Parsing options" container_error=false for arg in "$@"; do if [ $arg == "--studio" ]; then - if [ ! "$(docker-compose exec lms bash -c 'echo "Course will be created for studio"; exit $?')" ]; then + if [ ! "$(docker compose exec lms bash -c 'echo "Course will be created for studio"; exit $?')" ]; then echo "Issue with studio container" container_error=true else diff --git a/destroy.sh b/destroy.sh index aaf7d7bd14..94520e3326 100755 --- a/destroy.sh +++ b/destroy.sh @@ -5,5 +5,5 @@ set -e read -p "This will delete all data in your devstack. Would you like to proceed? [y/n] " -r if [[ $REPLY =~ ^[Yy]$ ]] then - docker-compose -f docker-compose.yml -f docker-compose-watchers.yml -f docker-compose-state-manager.yml -f docker-compose-host.yml -f docker-compose-analytics-pipeline.yml down -v + docker compose -f docker compose.yml -f docker compose-watchers.yml -f docker compose-state-manager.yml -f docker compose-host.yml -f docker compose-analytics-pipeline.yml down -v fi diff --git a/docker-compose-auth-provider.yml b/docker-compose-auth-provider.yml old mode 100644 new mode 100755 index 5e964af171..a66eb014db --- a/docker-compose-auth-provider.yml +++ b/docker-compose-auth-provider.yml @@ -8,11 +8,11 @@ # - Every service's container name should be prefixed with "edraak.devstack." to avoid conflicts with other containers # that might be running for the same service. -version: "2.1" +version: '3.3' services: auth-provider: - image: eu.gcr.io/openedx-231314/edraak/auth.provider:v1.0 + image: eu.gcr.io/openedx-231314/edraak/auth.provider:20250618-160217-m container_name: edraak.devstack.auth.provider environment: NO_PYTHON_UNINSTALL: 1 diff --git a/docker-compose-edx.yml b/docker-compose-edx.yml old mode 100644 new mode 100755 index d1a603aac5..d2fbb5f483 --- a/docker-compose-edx.yml +++ b/docker-compose-edx.yml @@ -8,7 +8,7 @@ # - Every service's container name should be prefixed with "edx.devstack." to avoid conflicts with other containers # that might be running for the same service. -version: "2.1" +version: '3.3' services: @@ -17,7 +17,7 @@ services: command: bash -c 'source /edx/app/edxapp/edxapp_env && while true; do python /edx/app/edxapp/edx-platform/manage.py lms runserver 0.0.0.0:18000 --settings devstack_docker; sleep 2; done' container_name: edx.devstack.lms depends_on: - - devpi + #- devpi - mysql - memcached - mongo @@ -44,37 +44,41 @@ services: - ${DEVSTACK_WORKSPACE}/src:/edx/src:cached - ~/.ssh/:/root/.ssh - studio: - command: bash -c 'source /edx/app/edxapp/edxapp_env && while true; do python /edx/app/edxapp/edx-platform/manage.py cms runserver 0.0.0.0:18010 --settings devstack_docker; sleep 200000; done' - container_name: edx.devstack.studio - depends_on: - - devpi - - mysql - - memcached - - mongo - # Allows attachment to the Studio service using 'docker attach '. - stdin_open: true - tty: true - environment: - BOK_CHOY_HOSTNAME: edx.devstack.studio - BOK_CHOY_LMS_PORT: 18103 - BOK_CHOY_CMS_PORT: 18131 - EDXAPP_TEST_MONGO_HOST: edx.devstack.mongo - NO_PYTHON_UNINSTALL: 0 - NO_PREREQ_INSTALL: 0 - image: eu.gcr.io/openedx-231314/edraak/edxapp:hawthorn.edraak.v3.2 - ports: - - "18010:18010" - - "19877:19877" # JS test debugging - - "18103:18103" - - "18131:18131" - volumes: - - edxapp_studio_assets:/edx/var/edxapp/staticfiles/ - - ${DEVSTACK_WORKSPACE}/edx-platform:/edx/app/edxapp/edx-platform:cached - - edxapp_node_modules:/edx/app/edxapp/edx-platform/node_modules - - ${DEVSTACK_WORKSPACE}/src:/edx/src:cached - - ~/.ssh/:/root/.ssh +# This been commented out cuz it's no longer needed in the local development +# +# studio: +# command: bash -c 'source /edx/app/edxapp/edxapp_env && while true; do python /edx/app/edxapp/edx-platform/manage.py cms runserver 0.0.0.0:18010 --settings devstack_docker; sleep 200000; done' +# container_name: edx.devstack.studio +# depends_on: +# - devpi +# - mysql +# - memcached +# - mongo +# # Allows attachment to the Studio service using 'docker attach '. +# stdin_open: true +# tty: true +# environment: +# BOK_CHOY_HOSTNAME: edx.devstack.studio +# BOK_CHOY_LMS_PORT: 18103 +# BOK_CHOY_CMS_PORT: 18131 +# EDXAPP_TEST_MONGO_HOST: edx.devstack.mongo +# NO_PYTHON_UNINSTALL: 0 +# NO_PREREQ_INSTALL: 0 +# image: eu.gcr.io/openedx-231314/edraak/edxapp:hawthorn.edraak.v3.2 +# ports: +# - "18010:18010" +# - "19877:19877" # JS test debugging +# - "18103:18103" +# - "18131:18131" +# volumes: +# - edxapp_studio_assets:/edx/var/edxapp/staticfiles/ +# - ${DEVSTACK_WORKSPACE}/edx-platform:/edx/app/edxapp/edx-platform:cached +# - edxapp_node_modules:/edx/app/edxapp/edx-platform/node_modules +# - ${DEVSTACK_WORKSPACE}/src:/edx/src:cached +# - ~/.ssh/:/root/.ssh +# This been commented out cuz it's no longer needed in the local development +# # forum: # command: bash -c 'source /edx/app/forum/ruby_env && source /edx/app/forum/devstack_forum_env && cd /edx/app/forum/cs_comments_service && bundle install && while true; do ruby app.rb -o 0.0.0.0 ; sleep 200000; done' # container_name: edx.devstack.forum @@ -89,26 +93,34 @@ services: # - ${DEVSTACK_WORKSPACE}/cs_comments_service:/edx/app/forum/cs_comments_service:cached # - ~/.ssh/:/root/.ssh - devpi: - container_name: edx.devstack.devpi - image: edxops/devpi:${OPENEDX_RELEASE:-latest} - ports: - - "3141:3141" - volumes: - - devpi_data:/data +# This been commented out cuz it's no longer needed in the local development +# +# devpi: +# container_name: edx.devstack.devpi +# image: edxops/devpi:${OPENEDX_RELEASE:-latest} +# ports: +# - "3141:3141" +# volumes: +# - devpi_data:/data router: depends_on: - lms - - studio -# - mktg - progs + +# This been commented out cuz it's no longer needed in the local development +# +# - studio +# - mktg volumes: - ./nginx/edx.conf:/etc/nginx/conf.d/edx.conf volumes: edxapp_lms_assets: - edxapp_studio_assets: edxapp_node_modules: + + # This been commented out cuz it's no longer needed in the local development + # + #edxapp_studio_assets: diff --git a/docker-compose-mktg.yml b/docker-compose-mktg.yml old mode 100644 new mode 100755 index 53cf5de570..1c8c7d5cb5 --- a/docker-compose-mktg.yml +++ b/docker-compose-mktg.yml @@ -8,12 +8,12 @@ # - Every service's container name should be prefixed with "edraak.devstack." to avoid conflicts with other containers # that might be running for the same service. -version: "2.1" +version: '3.3' services: mktg: - image: eu.gcr.io/openedx-231314/edraak/marketing + image: eu.gcr.io/openedx-231314/edraak/marketing:20250618-153829-m environment: NODE_ENV: development command: bash -c 'while true; do python manage.py runserver 0.0.0.0:8500 --settings=marketingsite.envs.dev; sleep 2; done' diff --git a/docker-compose-progs.yml b/docker-compose-progs.yml old mode 100644 new mode 100755 index 3ca970fa16..ef737ac043 --- a/docker-compose-progs.yml +++ b/docker-compose-progs.yml @@ -8,12 +8,12 @@ # - Every service's container name should be prefixed with "edraak.devstack." to avoid conflicts with other containers # that might be running for the same service. -version: "2.1" +version: '3.3' services: progs: - image: eu.gcr.io/openedx-231314/edraak/progs + image: eu.gcr.io/openedx-231314/edraak/progs:20250618-155233-m environment: PROGS_CFG: /app/docker.json NODE_ENV: development diff --git a/docker-compose.yml b/docker-compose.yml old mode 100644 new mode 100755 index 646f1d4ae2..a003aff624 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -8,23 +8,25 @@ # - Every service's container name should be prefixed with "edraak.devstack." to avoid conflicts with other containers # that might be running for the same service. -version: "2.1" +version: '3.3' services: - elasticsearch: - container_name: edx.devstack.elasticsearch - image: edxops/elasticsearch:devstack - ports: - - "9200:9200" - - "9300:9300" - volumes: - - elasticsearch_data:/usr/share/elasticsearch/data - - elasticsearch_data:/usr/share/elasticsearch/logs +# This been commented out cuz it's no longer needed in the local development +# +# elasticsearch: +# container_name: edx.devstack.elasticsearch +# image: edxops/elasticsearch:devstack +# ports: +# - "9200:9200" +# - "9300:9300" +# volumes: +# - elasticsearch_data:/usr/share/elasticsearch/datamake +# - elasticsearch_data:/usr/share/elasticsearch/logs memcached: container_name: edx.devstack.memcached - image: memcached:1.4.24 + image: memcached:1.6 ports: - "11211:11211" @@ -32,21 +34,21 @@ services: # We disable the journal for a minor performance gain. command: mongod --nojournal container_name: edx.devstack.mongo - image: mongo:4.4.14 + image: mongo:6.0.14 ports: - "27017:27017" volumes: - mongo_data:/data/db mysql: - command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci + command: mysqld --character-set-server=utf8 --collation-server=utf8_general_ci --default-authentication-plugin=mysql_native_password container_name: edx.devstack.mysql environment: MYSQL_ROOT_PASSWORD: "" MYSQL_ALLOW_EMPTY_PASSWORD: "yes" - image: mysql:5.7 + image: mysql:8.0.31 ports: - - "3306:3306" + - "3306:3306" volumes: - mysql_data:/var/lib/mysql @@ -78,7 +80,9 @@ services: - auth.edraak.dev volumes: - elasticsearch_data: mongo_data: mysql_data: - devpi_data: +# This been commented out cuz it's no longer needed in the local development +# +# elasticsearch_data: +# devpi_data: diff --git a/healthchecks.sh b/healthchecks.sh index 8f98dfe855..8e0cbcee1f 100755 --- a/healthchecks.sh +++ b/healthchecks.sh @@ -3,34 +3,34 @@ set -x echo "Checking LMS heartbeat:" curl http://localhost:18000/heartbeat if [ $? -ne 0 ]; then - docker-compose logs + docker compose logs exit 2 fi echo echo "Checking Studio heartbeat:" curl http://localhost:18010/heartbeat # Studio if [ $? -ne 0 ]; then - docker-compose logs + docker compose logs exit 2 fi echo echo "Checking ecommerce health:" curl http://localhost:18130/health/ # Ecommerce if [ $? -ne 0 ]; then - docker-compose logs + docker compose logs exit 2 fi echo echo "Checking discovery health:" curl http://localhost:18381/health/ # Discovery if [ $? -ne 0 ]; then - docker-compose logs + docker compose logs exit 2 fi echo echo "Checking forum health:" curl http://localhost:44567/heartbeat # Forums if [ $? -ne 0 ]; then - docker-compose logs + docker compose logs exit 2 -fi \ No newline at end of file +fi diff --git a/mktg.mk b/mktg.mk old mode 100644 new mode 100755 index b4ac8bb84d..5b2c3d561b --- a/mktg.mk +++ b/mktg.mk @@ -24,36 +24,39 @@ mktg.help: mktg.build: - docker build -t eu.gcr.io/openedx-231314/edraak/marketing -f ../marketing-site/Dockerfile ../marketing-site + docker build -t eu.gcr.io/openedx-231314/edraak/marketing:latest -f ../marketing-site/Dockerfile ../marketing-site mktg.pushimage: - docker push eu.gcr.io/openedx-231314/edraak/marketing + docker push eu.gcr.io/openedx-231314/edraak/marketing:latest mktg.migrate: ## Kill the Marketing Django development server. The watcher process will restart it. - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'python manage.py migrate --settings=marketingsite.envs.dev' + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'python manage.py migrate --settings=marketingsite.envs.dev' mktg.langs_push: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg python manage.py langs_push --settings=marketingsite.envs.dev + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg python manage.py langs_push --settings=marketingsite.envs.dev mktg.langs_pull: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg python manage.py langs_pull --settings=marketingsite.envs.dev + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg python manage.py langs_pull --settings=marketingsite.envs.dev mktg.install_pip: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg pip install -r requirements.txt + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg pip install -r requirements.txt mktg.install_npm: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg npm install + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg npm install + +mktg.install_yarn: + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg yarn mktg.copy_cache: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg cp -Rnv /cache/node_modules /cache/.compiled /app + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg cp -Rnv /cache/node_modules /cache/.compiled /app mktg.dev: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg npm run dev + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg npm run dev mktg.watch: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg npx gulp watch + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg npx gulp watcher mktg.install_all: | mktg.install_pip mktg.install_npm mktg.dev mktg.migrate mktg.fix-npm: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'chown -R root ~/.npm' + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'chown -R root ~/.npm' diff --git a/mysql8_edx_fix/add_replace_sensitive_column.sql b/mysql8_edx_fix/add_replace_sensitive_column.sql new file mode 100644 index 0000000000..5e0a910689 --- /dev/null +++ b/mysql8_edx_fix/add_replace_sensitive_column.sql @@ -0,0 +1,18 @@ +USE edxapp; + +SET @column_exists := ( + SELECT COUNT(*) FROM information_schema.columns + WHERE table_schema = 'edxapp' + AND table_name = 'enterprise_enterprisecustomer' + AND column_name = 'replace_sensitive_sso_username' +); + +SET @ddl := IF( + @column_exists = 0, + 'ALTER TABLE enterprise_enterprisecustomer ADD COLUMN replace_sensitive_sso_username TINYINT(1) DEFAULT 0;', + 'SELECT "Column already exists";' +); + +PREPARE stmt FROM @ddl; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; diff --git a/mysql8_edx_fix/add_verify_student_constraint.sql b/mysql8_edx_fix/add_verify_student_constraint.sql new file mode 100644 index 0000000000..6fbb392b9b --- /dev/null +++ b/mysql8_edx_fix/add_verify_student_constraint.sql @@ -0,0 +1,20 @@ +USE edxapp; + +-- Check if the constraint already exists +SET @index_exists := ( + SELECT COUNT(*) FROM information_schema.statistics + WHERE table_schema = 'edxapp' + AND table_name = 'verify_student_skippedreverification' + AND index_name = 'unique_skippedreverification' +); + +-- Add the constraint only if it's missing +SET @ddl := IF( + @index_exists = 0, + 'ALTER TABLE verify_student_skippedreverification ADD UNIQUE INDEX unique_skippedreverification (user_id, course_id);', + 'SELECT "Constraint already exists"' +); + +PREPARE stmt FROM @ddl; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; diff --git a/nginx/ssl/chained.crt b/nginx/ssl/chained.crt index 2a6620a751..6f82c16d06 100644 --- a/nginx/ssl/chained.crt +++ b/nginx/ssl/chained.crt @@ -1,87 +1,81 @@ -----BEGIN CERTIFICATE----- -MIIEYDCCA0igAwIBAgISBN2Se+qknjuPcCklAN6vfaoUMA0GCSqGSIb3DQEBCwUA -MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD -EwJSMzAeFw0yMzAzMDEwNjQ4MDdaFw0yMzA1MzAwNjQ4MDZaMBcxFTATBgNVBAMM -DCouZWRyYWFrLmRldjBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABInlmojh6q+Z -OaE+rsFdoA3soEJoqhz1y9V+8/YnhA90nnwtczb8pfuISvpS6vIw7hPyk9YX/FGN -NVShJE012bKjggJUMIICUDAOBgNVHQ8BAf8EBAMCB4AwHQYDVR0lBBYwFAYIKwYB -BQUHAwEGCCsGAQUFBwMCMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFPORDyjs3ESv -wQhaW4obfYItKlvXMB8GA1UdIwQYMBaAFBQusxe3WFbLrlAJQOYfr52LFMLGMFUG -CCsGAQUFBwEBBEkwRzAhBggrBgEFBQcwAYYVaHR0cDovL3IzLm8ubGVuY3Iub3Jn -MCIGCCsGAQUFBzAChhZodHRwOi8vcjMuaS5sZW5jci5vcmcvMCMGA1UdEQQcMBqC -DCouZWRyYWFrLmRldoIKZWRyYWFrLmRldjBMBgNVHSAERTBDMAgGBmeBDAECATA3 -BgsrBgEEAYLfEwEBATAoMCYGCCsGAQUFBwIBFhpodHRwOi8vY3BzLmxldHNlbmNy -eXB0Lm9yZzCCAQUGCisGAQQB1nkCBAIEgfYEgfMA8QB3AHoyjFTYty22IOo44FIe -6YQWcDIThU070ivBOlejUutSAAABhpwkkLQAAAQDAEgwRgIhAJyHTAHjmm7Lkq81 -5kWW2qJxmyAxkcnEBBTKxeo8ZOebAiEAh5/Nbi29GxKt3enQ0vfbpMHEWeUAnMxj -Ira6ycs+qXcAdgCt9776fP8QyIudPZwePhhqtGcpXc+xDCTKhYY069yCigAAAYac -JJD7AAAEAwBHMEUCID0ILYe9suKLa2itbsKCD+EfCrk6kPICddQ4S9LRC38gAiEA -wobTnZFhoAAcqixYwSHBPm6/kQM4b76hGQPy02lp1FkwDQYJKoZIhvcNAQELBQAD -ggEBAKqc5QZQjog43PNBvCliCRlcVR24ng/NT+fo/qpFteNr9a5a4xMzd8VOGo4H -N+KtREE4byzzguxFu61mDD/mlrJvmg8/OTa9+ix8hsv7g3qafuggzrDVKcBs1jPA -1p5NWgAHdVE1QsV4xsHK6N6hGlpk8BDtw2GHlvklGsZ2gsRytCyZAcZYQnm5ejLt -pIfILukYNWxKVh26ByvROJ/O6FA7pLHvPYBEt5lqdSGuEfSXS5eZkdi9M07fBRrt -uRuYPyUAXn+zRg5VOcCwAB7igKVnNlGxcUGXPLxVqRUOueYYe33RGTOgKCfaIhQf -d5zvqXqgJHCAlU/hQh63xrEhafY= +MIIDkzCCAxqgAwIBAgISBQf8C7ZypNmFifJSgc8OhBFkMAoGCCqGSM49BAMDMDMx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQDEwNZ +RTEwHhcNMjYwNjAxMDUyMDM3WhcNMjYwODMwMDUyMDM2WjAXMRUwEwYDVQQDDAwq +LmVkcmFhay5kZXYwWTATBgcqhkjOPQIBBggqhkjOPQMBBwNCAARidtEg6BLG/amW +PIMZve1OSvbuxe3Fa5vKxL0tGVlQp/bUEeFoKpdCMac4fwbYyBXVpy92h6AoqMSL +BqYsbuHJo4ICKDCCAiQwDgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUF +BwMBMAwGA1UdEwEB/wQCMAAwHQYDVR0OBBYEFK6QxQNpQCGPbNGrn7DcWUYPF2xK +MB8GA1UdIwQYMBaAFLsgykcL/tflnPmPCSqjjDdFsbzYMDMGCCsGAQUFBwEBBCcw +JTAjBggrBgEFBQcwAoYXaHR0cDovL3llMS5pLmxlbmNyLm9yZy8wIwYDVR0RBBww +GoIMKi5lZHJhYWsuZGV2ggplZHJhYWsuZGV2MBMGA1UdIAQMMAowCAYGZ4EMAQIB +MC8GA1UdHwQoMCYwJKAioCCGHmh0dHA6Ly95ZTEuYy5sZW5jci5vcmcvMTAxLmNy +bDCCAQ0GCisGAQQB1nkCBAIEgf4EgfsA+QB+AEavhj07PuWfpXfeqCRdNrDZ7SKi +I/Rhd0EilFLulVBfAAABnoHWB+IACAAABQAIN/SeBAMARzBFAiEAu0rJTqrCYXoP +nrw/muVcaQjnI8KVasdZ9lLsWgK/FPkCIAUv4QFPjYmVZe+VCi08g2XSUPB5h4JG +n9wfz6L4508zAHcA2AlVO5RPev/IFhlvlE+Fq7D4/F6HVSYPFdEucrtFSxQAAAGe +gdYHsQAABAMASDBGAiEA7Rq4A8XuaLVZHa/GaeYJ41XrxWtLoh2z0wc+kLf9qKQC +IQDtzFGsYqkV2nPkNaoRLZgLHu9777fphknd/C0tdhMfJzAKBggqhkjOPQQDAwNn +ADBkAjApyrxxY658hRt7hc8AYih2NAP0MQpDaltStgAJzAdAVlVbtu+GHffe29/X +ZD8Y7lMCMDk5Pl+TX7gDSmqeMoxYIKzcpJ3hpBfeQHcJrTFnGBYi2unn9kkT0FlE +p32QsqAiAA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIFFjCCAv6gAwIBAgIRAJErCErPDBinU/bWLiWnX1owDQYJKoZIhvcNAQELBQAw -TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh -cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjAwOTA0MDAwMDAw -WhcNMjUwOTE1MTYwMDAwWjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg -RW5jcnlwdDELMAkGA1UEAxMCUjMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK -AoIBAQC7AhUozPaglNMPEuyNVZLD+ILxmaZ6QoinXSaqtSu5xUyxr45r+XXIo9cP -R5QUVTVXjJ6oojkZ9YI8QqlObvU7wy7bjcCwXPNZOOftz2nwWgsbvsCUJCWH+jdx -sxPnHKzhm+/b5DtFUkWWqcFTzjTIUu61ru2P3mBw4qVUq7ZtDpelQDRrK9O8Zutm -NHz6a4uPVymZ+DAXXbpyb/uBxa3Shlg9F8fnCbvxK/eG3MHacV3URuPMrSXBiLxg -Z3Vms/EY96Jc5lP/Ooi2R6X/ExjqmAl3P51T+c8B5fWmcBcUr2Ok/5mzk53cU6cG -/kiFHaFpriV1uxPMUgP17VGhi9sVAgMBAAGjggEIMIIBBDAOBgNVHQ8BAf8EBAMC -AYYwHQYDVR0lBBYwFAYIKwYBBQUHAwIGCCsGAQUFBwMBMBIGA1UdEwEB/wQIMAYB -Af8CAQAwHQYDVR0OBBYEFBQusxe3WFbLrlAJQOYfr52LFMLGMB8GA1UdIwQYMBaA -FHm0WeZ7tuXkAXOACIjIGlj26ZtuMDIGCCsGAQUFBwEBBCYwJDAiBggrBgEFBQcw -AoYWaHR0cDovL3gxLmkubGVuY3Iub3JnLzAnBgNVHR8EIDAeMBygGqAYhhZodHRw -Oi8veDEuYy5sZW5jci5vcmcvMCIGA1UdIAQbMBkwCAYGZ4EMAQIBMA0GCysGAQQB -gt8TAQEBMA0GCSqGSIb3DQEBCwUAA4ICAQCFyk5HPqP3hUSFvNVneLKYY611TR6W -PTNlclQtgaDqw+34IL9fzLdwALduO/ZelN7kIJ+m74uyA+eitRY8kc607TkC53wl -ikfmZW4/RvTZ8M6UK+5UzhK8jCdLuMGYL6KvzXGRSgi3yLgjewQtCPkIVz6D2QQz -CkcheAmCJ8MqyJu5zlzyZMjAvnnAT45tRAxekrsu94sQ4egdRCnbWSDtY7kh+BIm -lJNXoB1lBMEKIq4QDUOXoRgffuDghje1WrG9ML+Hbisq/yFOGwXD9RiX8F6sw6W4 -avAuvDszue5L3sz85K+EC4Y/wFVDNvZo4TYXao6Z0f+lQKc0t8DQYzk1OXVu8rp2 -yJMC6alLbBfODALZvYH7n7do1AZls4I9d1P4jnkDrQoxB3UqQ9hVl3LEKQ73xF1O -yK5GhDDX8oVfGKF5u+decIsH4YaTw7mP3GFxJSqv3+0lUFJoi5Lc5da149p90Ids -hCExroL1+7mryIkXPeFM5TgO9r0rvZaBFOvV2z0gp35Z0+L4WPlbuEjN/lxPFin+ -HlUjr8gRsI3qfJOQFy/9rKIJR0Y/8Omwt/8oTWgy1mdeHmmjk7j1nYsvC9JSQ6Zv -MldlTTKB3zhThV1+XWYp6rjd5JW1zbVWEkLNxE7GJThEUG3szgBVGP7pSWTUTsqX -nLRbwHOoq7hHwg== +MIICizCCAhGgAwIBAgIQXd1w3TH4AchcGGp6BLgK/jAKBggqhkjOPQQDAzAuMQsw +CQYDVQQGEwJVUzENMAsGA1UEChMESVNSRzEQMA4GA1UEAxMHUm9vdCBZRTAeFw0y +NTA5MDMwMDAwMDBaFw0yODA5MDIyMzU5NTlaMDMxCzAJBgNVBAYTAlVTMRYwFAYD +VQQKEw1MZXQncyBFbmNyeXB0MQwwCgYDVQQDEwNZRTEwdjAQBgcqhkjOPQIBBgUr +gQQAIgNiAAQHZVB1/mimla2hfSurylScjPMZaOJXLz/NnAc2sylm8WDyhU9Ccp+z +ASQi5vSwGGJjSGklkD9fdPR8GpyDIOIjCEfrnbt/v+ZSEPLLEGbaM6EccDbN7p9x +teIm2Avf+ryjge4wgeswDgYDVR0PAQH/BAQDAgGGMBMGA1UdJQQMMAoGCCsGAQUF +BwMBMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYDVR0OBBYEFLsgykcL/tflnPmPCSqj +jDdFsbzYMB8GA1UdIwQYMBaAFKPIJlqOoUzQNWP8myPIOq5W809WMDIGCCsGAQUF +BwEBBCYwJDAiBggrBgEFBQcwAoYWaHR0cDovL3llLmkubGVuY3Iub3JnLzATBgNV +HSAEDDAKMAgGBmeBDAECATAnBgNVHR8EIDAeMBygGqAYhhZodHRwOi8veWUuYy5s +ZW5jci5vcmcvMAoGCCqGSM49BAMDA2gAMGUCMQDgjUEahFT/h3DRakqiPZpLvPgf +Zwkt6K2EOMmh1nvEzl83eMLYcod4GCl3b0J1Nn0CMBNYmEQJb4CEG5WoOe7aRn/L +VKu6saHmHEynI7ysIPd8zQsK1HdmhlHKlw9Z5GpGvA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- -MIIFYDCCBEigAwIBAgIQQAF3ITfU6UK47naqPGQKtzANBgkqhkiG9w0BAQsFADA/ -MSQwIgYDVQQKExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMT -DkRTVCBSb290IENBIFgzMB4XDTIxMDEyMDE5MTQwM1oXDTI0MDkzMDE4MTQwM1ow -TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh -cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwggIiMA0GCSqGSIb3DQEB -AQUAA4ICDwAwggIKAoICAQCt6CRz9BQ385ueK1coHIe+3LffOJCMbjzmV6B493XC -ov71am72AE8o295ohmxEk7axY/0UEmu/H9LqMZshftEzPLpI9d1537O4/xLxIZpL -wYqGcWlKZmZsj348cL+tKSIG8+TA5oCu4kuPt5l+lAOf00eXfJlII1PoOK5PCm+D -LtFJV4yAdLbaL9A4jXsDcCEbdfIwPPqPrt3aY6vrFk/CjhFLfs8L6P+1dy70sntK -4EwSJQxwjQMpoOFTJOwT2e4ZvxCzSow/iaNhUd6shweU9GNx7C7ib1uYgeGJXDR5 -bHbvO5BieebbpJovJsXQEOEO3tkQjhb7t/eo98flAgeYjzYIlefiN5YNNnWe+w5y -sR2bvAP5SQXYgd0FtCrWQemsAXaVCg/Y39W9Eh81LygXbNKYwagJZHduRze6zqxZ -Xmidf3LWicUGQSk+WT7dJvUkyRGnWqNMQB9GoZm1pzpRboY7nn1ypxIFeFntPlF4 -FQsDj43QLwWyPntKHEtzBRL8xurgUBN8Q5N0s8p0544fAQjQMNRbcTa0B7rBMDBc -SLeCO5imfWCKoqMpgsy6vYMEG6KDA0Gh1gXxG8K28Kh8hjtGqEgqiNx2mna/H2ql -PRmP6zjzZN7IKw0KKP/32+IVQtQi0Cdd4Xn+GOdwiK1O5tmLOsbdJ1Fu/7xk9TND -TwIDAQABo4IBRjCCAUIwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYw -SwYIKwYBBQUHAQEEPzA9MDsGCCsGAQUFBzAChi9odHRwOi8vYXBwcy5pZGVudHJ1 -c3QuY29tL3Jvb3RzL2RzdHJvb3RjYXgzLnA3YzAfBgNVHSMEGDAWgBTEp7Gkeyxx -+tvhS5B1/8QVYIWJEDBUBgNVHSAETTBLMAgGBmeBDAECATA/BgsrBgEEAYLfEwEB -ATAwMC4GCCsGAQUFBwIBFiJodHRwOi8vY3BzLnJvb3QteDEubGV0c2VuY3J5cHQu -b3JnMDwGA1UdHwQ1MDMwMaAvoC2GK2h0dHA6Ly9jcmwuaWRlbnRydXN0LmNvbS9E -U1RST09UQ0FYM0NSTC5jcmwwHQYDVR0OBBYEFHm0WeZ7tuXkAXOACIjIGlj26Ztu -MA0GCSqGSIb3DQEBCwUAA4IBAQAKcwBslm7/DlLQrt2M51oGrS+o44+/yQoDFVDC -5WxCu2+b9LRPwkSICHXM6webFGJueN7sJ7o5XPWioW5WlHAQU7G75K/QosMrAdSW -9MUgNTP52GE24HGNtLi1qoJFlcDyqSMo59ahy2cI2qBDLKobkx/J3vWraV0T9VuG -WCLKTVXkcGdtwlfFRjlBz4pYg1htmf5X6DYO8A4jqv2Il9DjXA6USbW1FzXSLr9O -he8Y4IWS6wY7bCkjCWDcRQJMEhg76fsO3txE+FiYruq9RUWhiF1myv4Q6W+CyBFC -Dfvp7OOGAN6dEOM4+qR9sdjoSYKEBpsr6GtPAQw4dy753ec5 +MIICpjCCAiugAwIBAgIRAIchZfw0tuX7qK3Vs3BftTowCgYIKoZIzj0EAwMwTzEL +MAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2VhcmNo +IEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDIwHhcNMjYwNTEzMDAwMDAwWhcN +MzIwOTAyMjM1OTU5WjAuMQswCQYDVQQGEwJVUzENMAsGA1UEChMESVNSRzEQMA4G +A1UEAxMHUm9vdCBZRTB2MBAGByqGSM49AgEGBSuBBAAiA2IABDwS/6vhrcVqcbBo ++wgdI3fwn9x7DNJJOY/lTOti0vkwuRN87RhEhTH17E7XyFjWsPYhIPt/wzOqxTd2 +b+4ZJNy9ID04YywF9U5zasDVyGSNErVNtz8uSGh5izW87j77GaOB6zCB6DAOBgNV +HQ8BAf8EBAMCAQYwEwYDVR0lBAwwCgYIKwYBBQUHAwEwDwYDVR0TAQH/BAUwAwEB +/zAdBgNVHQ4EFgQUo8gmWo6hTNA1Y/ybI8g6rlbzT1YwHwYDVR0jBBgwFoAUfEKW +rt5LSDv6kviejM9ti6lyN5UwMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZo +dHRwOi8veDIuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcGA1Ud +HwQgMB4wHKAaoBiGFmh0dHA6Ly94Mi5jLmxlbmNyLm9yZy8wCgYIKoZIzj0EAwMD +aQAwZgIxAMU19WCtmxVND8UHBZRoma49Z7jPs64Dma0eTu1OChVbB/2J7GV3nvYK +Ax54uk1G9QIxAO0miLVJu8PLNiXXXkiE/gsK3CTRTF/aeo4bMX42Zw40csRU6AC2 +6hSW1/IWaas6dg== +-----END CERTIFICATE----- +-----BEGIN CERTIFICATE----- +MIIEcDCCAligAwIBAgIQbI8dxyfHEX97r4U6yYD5zTANBgkqhkiG9w0BAQsFADBP +MQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJuZXQgU2VjdXJpdHkgUmVzZWFy +Y2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBYMTAeFw0yNjA1MTMwMDAwMDBa +Fw0zMjA5MDIyMzU5NTlaME8xCzAJBgNVBAYTAlVTMSkwJwYDVQQKEyBJbnRlcm5l +dCBTZWN1cml0eSBSZXNlYXJjaCBHcm91cDEVMBMGA1UEAxMMSVNSRyBSb290IFgy +MHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEzZvVn4CDCuwJSvMWSj5cz3es3mcFDR0H +ttwW+1qLFNvicWDEukWVEYmO6gbf9yoWHKS5xcUy4APgHoIYOIvXRdgKam7mAHf7 +AlF9ItgKbppbd9/w+kHsOdx1ymgHDB/qo4H1MIHyMA4GA1UdDwEB/wQEAwIBBjAd +BgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwDwYDVR0TAQH/BAUwAwEB/zAd +BgNVHQ4EFgQUfEKWrt5LSDv6kviejM9ti6lyN5UwHwYDVR0jBBgwFoAUebRZ5nu2 +5eQBc4AIiMgaWPbpm24wMgYIKwYBBQUHAQEEJjAkMCIGCCsGAQUFBzAChhZodHRw +Oi8veDEuaS5sZW5jci5vcmcvMBMGA1UdIAQMMAowCAYGZ4EMAQIBMCcGA1UdHwQg +MB4wHKAaoBiGFmh0dHA6Ly94MS5jLmxlbmNyLm9yZy8wDQYJKoZIhvcNAQELBQAD +ggIBAD2/e9frmMxNpCV03qUHegg+MV2wz9644YoXdqtH8RyWYcBO7xfjjGEXdU1e +/o0OkEFiynUCOSIk/vLLo7ttz6CPAeNlWfC0XNkoGeWgK6jjXvozBaGuGH5n0Ufo +shMeWTuURqNN5G00sSXDTBrpp2+mgvdZQjb8K11TYMA25QA+YHNfbIEL0BniAhKS +2gsnJjSzrdZLI+EZ7SEyqdR2rkjd1KutLDU+n3TFyxjniZVGur4YlhMP3mY/dV95 +IruAkkjOZier6hGBdEgZXXvaCz9u9iVEadsIE75pAGL8oHV5vxdARDiotRpul1IN +/UZwzAbrfUFcw1HkAcYD/mlZfnQ2ieCF2MS7j3Vhv7JPDKp45fmykmzYNSrumRW0 +upFFKDBOoF7hsOb7oLyHS+Uft6jOUfOrogj8YUx38hKb2K20r42OgsSdDdxdeYWc +MS3Sb6mwJeSZEYxJ2gaXnDSPaKhhrNkYwljyVQyr4Nq+MEJytXNTnHqaAcrNwZlV +pcJL1KBnMrMjP7eanvUwL3FYj3cF17jtboLt7gLoi4+2rWZFvn+w54jmd/FIuhhZ +cEaU/wvU6BUNMtcVquVGHp7itQeDth5j+XL3j4WJ2SABwzUl6OeYdgpIt/ITZa+p +TT0mQ/r5XyA4MEAiabn7XJjvCERlF2dcn2wqJw+CreTkkQ2R -----END CERTIFICATE----- diff --git a/nginx/ssl/private.key b/nginx/ssl/private.key index bb04842028..b577126ba5 100644 --- a/nginx/ssl/private.key +++ b/nginx/ssl/private.key @@ -1,5 +1,5 @@ -----BEGIN PRIVATE KEY----- -MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQg/l1eacgHB6arpbrX -0mNE6nLrPoKhHgxMSZYckm+CHxOhRANCAASJ5ZqI4eqvmTmhPq7BXaAN7KBCaKoc -9cvVfvP2J4QPdJ58LXM2/KX7iEr6UuryMO4T8pPWF/xRjTVUoSRNNdmy +MIGHAgEAMBMGByqGSM49AgEGCCqGSM49AwEHBG0wawIBAQQgUCDfmBaU0DMCp/sT +0YtT20/s3a4lGb1fWN/saVim6l6hRANCAARidtEg6BLG/amWPIMZve1OSvbuxe3F +a5vKxL0tGVlQp/bUEeFoKpdCMac4fwbYyBXVpy92h6AoqMSLBqYsbuHJ -----END PRIVATE KEY----- diff --git a/programs/provision.sh b/programs/provision.sh index 8ce3d1567a..c6a6aebe75 100755 --- a/programs/provision.sh +++ b/programs/provision.sh @@ -42,7 +42,7 @@ docker_exec() { /edx/app/$app/$repo/manage.py $cmd " - docker-compose exec "$service" bash -c "$CMDS" + docker compose exec "$service" bash -c "$CMDS" } provision_ida() { diff --git a/progs.mk b/progs.mk old mode 100644 new mode 100755 index 0eabe7b2ea..ca6931721e --- a/progs.mk +++ b/progs.mk @@ -32,37 +32,40 @@ progs.pushimage: docker push eu.gcr.io/openedx-231314/edraak/progs progs.migrate: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs python manage.py migrate --settings=edraakprograms.dev + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs python manage.py migrate --settings=edraakprograms.dev + +progs.makemigrations: + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs python manage.py makemigrations --settings=edraakprograms.dev progs.langs_push: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs python manage.py langs_push --settings=edraakprograms.dev + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs python manage.py langs_push --settings=edraakprograms.dev progs.langs_pull: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs python manage.py langs_pull --settings=edraakprograms.dev + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs python manage.py langs_pull --settings=edraakprograms.dev progs.install_pip: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs pip install -r requirements.txt + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs pip install -r requirements.txt progs.install_npm: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs npm install + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs npm install progs.copy_cache: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs cp -Rnv /cache/node_modules /cache/.compiled /app + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs cp -Rnv /cache/node_modules /cache/.compiled /app progs.dev: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs npm run dev + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs npm run dev progs.watch: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs npm run dev:watch + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs npm run dev:watch progs.install_all: | progs.install_pip progs.install_npm progs.dev progs.migrate progs.watch_js: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs npm run dev:watch + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs npm run dev:watch progs.watch_css: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs npm run watch-scss + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs npm run watch-scss progs.fix-npm: - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'chown -R root ~/.npm' + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'chown -R root ~/.npm' diff --git a/provision-b2b.sh b/provision-b2b.sh index 28ab550882..749538c90c 100755 --- a/provision-b2b.sh +++ b/provision-b2b.sh @@ -1,29 +1,29 @@ set -e echo "** bring b2b container up **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` up -d b2b +docker compose `echo ${DOCKER_COMPOSE_FILES}` up -d b2b echo "** Creating databases **" echo "CREATE DATABASE IF NOT EXISTS b2b;" | docker exec -i edx.devstack.mysql mysql -uroot mysql echo "** b2b: Setting correct python version **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1' echo "** b2b: Copy cacheed files to code dir **" -#docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'cp -Rn /cache/* /app/.' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'pip install -r requirements.txt' +#docker compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'cp -Rn /cache/* /app/.' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'pip install -r requirements.txt' echo "** b2b: Migrating databases **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'python manage.py migrate --settings=edraakprograms.dev' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'python manage.py migrate --settings=edraakprograms.dev' echo "** b2b: Compiling assets **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'npm rebuild node-sass' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'chown -R root ~/.npm' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'rm -rf node_modules/' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'npm install' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'npm run dev' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'python manage.py collectstatic --ignore="*.less" --ignore="*.scss" --noinput --clear --settings=edraakprograms.dev' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'npm rebuild node-sass' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'chown -R root ~/.npm' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'rm -rf node_modules/' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'npm install' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'npm run dev' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec b2b bash -c 'python manage.py collectstatic --ignore="*.less" --ignore="*.scss" --noinput --clear --settings=edraakprograms.dev' echo "** b2b: Restarting **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` restart b2b +docker compose `echo ${DOCKER_COMPOSE_FILES}` restart b2b diff --git a/provision-forum.sh b/provision-forum.sh index 793a799b73..1405b2d6ff 100755 --- a/provision-forum.sh +++ b/provision-forum.sh @@ -2,5 +2,5 @@ set -e set -o pipefail set -x -docker-compose $DOCKER_COMPOSE_FILES up -d forum -docker-compose exec forum bash -c 'source /edx/app/forum/ruby_env && cd /edx/app/forum/cs_comments_service && bundle install --deployment --path /edx/app/forum/.gem/' +docker compose $DOCKER_COMPOSE_FILES up -d forum +docker compose exec forum bash -c 'source /edx/app/forum/ruby_env && cd /edx/app/forum/cs_comments_service && bundle install --deployment --path /edx/app/forum/.gem/' diff --git a/provision-lms.sh b/provision-lms.sh index a3a29c27ca..844ac56522 100755 --- a/provision-lms.sh +++ b/provision-lms.sh @@ -2,12 +2,12 @@ set -e set -o pipefail set -x -apps=( lms studio ) +apps=( lms ) echo "** Edx **" echo -e "${GREEN}Creating databases and users...${NC}" docker exec -i edx.devstack.mysql mysql -uroot mysql < provision.sql -docker exec -i edx.devstack.mongo mongo < mongo-provision.js +docker exec -i edx.devstack.mongo mongosh < mongo-provision.js # Load database dumps for the largest databases to save time ./load-db.sh edxapp @@ -16,35 +16,46 @@ docker exec -i edx.devstack.mongo mongo < mongo-provision.js # Bring edxapp containers online for app in "${apps[@]}"; do echo ${DOCKER_COMPOSE_FILES} - docker-compose `echo ${DOCKER_COMPOSE_FILES}` up -d $app + docker compose `echo ${DOCKER_COMPOSE_FILES}` up -d $app done echo ${DOCKER_COMPOSE_FILES} -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform && NO_PYTHON_UNINSTALL=1 NO_PREREQ_INSTALL=0 paver install_prereqs' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform && NO_PYTHON_UNINSTALL=1 NO_PREREQ_INSTALL=0 paver install_prereqs' + +docker cp ./mysql8_edx_fix/add_replace_sensitive_column.sql edx.devstack.mysql:/add_replace_sensitive_column.sql +docker compose exec mysql bash -c "mysql -u root edxapp < /add_replace_sensitive_column.sql" +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform && python manage.py lms migrate enterprise 0042 --fake --settings=devstack_docker' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform && python manage.py lms migrate enterprise 0046 --fake --settings=devstack_docker' + +docker cp ./mysql8_edx_fix/add_verify_student_constraint.sql edx.devstack.mysql:/add_verify_student_constraint.sql +docker compose exec mysql bash -c "mysql -u root edxapp < /add_verify_student_constraint.sql" +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform && python manage.py lms migrate verify_student 0006 --fake --settings=devstack_docker' + + # Run edxapp migrations first since they are needed for the service users and OAuth clients -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform && paver update_db --settings devstack_docker' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform && paver update_db --settings devstack_docker' # Create a superuser for edxapp -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack_docker manage_user edx edx@example.com --superuser --staff' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && echo "from django.contrib.auth import get_user_model; User = get_user_model(); user = User.objects.get(username=\"edx\"); user.set_password(\"edx\"); user.save()" | python /edx/app/edxapp/edx-platform/manage.py lms shell --settings=devstack_docker' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack_docker manage_user edx edx@example.com --superuser --staff' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && echo "from django.contrib.auth import get_user_model; User = get_user_model(); user = User.objects.get(username=\"edx\"); user.set_password(\"edx\"); user.save()" | python /edx/app/edxapp/edx-platform/manage.py lms shell --settings=devstack_docker' # Create an enterprise service user for edxapp -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack_docker manage_user enterprise_worker enterprise_worker@example.com' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack_docker manage_user enterprise_worker enterprise_worker@example.com' # Enable the LMS-E-Commerce integration -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack_docker configure_commerce' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py lms --settings=devstack_docker configure_commerce' # Create demo course and users -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c '/edx/app/edx_ansible/venvs/edx_ansible/bin/ansible-playbook /edx/app/edx_ansible/edx_ansible/playbooks/demo.yml -v -c local -i "127.0.0.1," --extra-vars="COMMON_EDXAPP_SETTINGS=devstack_docker"' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c '/edx/app/edx_ansible/venvs/edx_ansible/bin/ansible-playbook /edx/app/edx_ansible/edx_ansible/playbooks/demo.yml -v -c local -i "127.0.0.1," --extra-vars="COMMON_EDXAPP_SETTINGS=devstack_docker"' # Fix missing vendor file by clearing the cache -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'rm /edx/app/edxapp/edx-platform/.prereqs_cache/Node_prereqs.sha1' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec lms bash -c 'rm /edx/app/edxapp/edx-platform/.prereqs_cache/Node_prereqs.sha1' # Create static assets for both LMS and Studio for app in "${apps[@]}"; do - docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec $app bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform && paver update_assets --settings devstack_docker' + docker compose `echo ${DOCKER_COMPOSE_FILES}` exec $app bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform && paver update_assets --settings devstack_docker' done # Provision a retirement service account user diff --git a/provision-mktg.sh b/provision-mktg.sh index 5ca7e28e24..fdf4d638cf 100755 --- a/provision-mktg.sh +++ b/provision-mktg.sh @@ -1,22 +1,22 @@ set -e echo "** Bring Marketing up **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` up -d mktg +docker compose `echo ${DOCKER_COMPOSE_FILES}` up -d mktg echo "** Creating databases **" echo "CREATE DATABASE IF NOT EXISTS marketingsite;" | docker exec -i edx.devstack.mysql mysql -uroot mysql echo "** Marketing: Copy cacheed files to code dir **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'cp -Rn /cache/* /app/.' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'pip install -r requirements.txt' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'cp -Rn /cache/* /app/.' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'pip3 install -r requirements.txt' echo "** Marketing: Migrating databases **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'python manage.py migrate --settings=marketingsite.envs.dev' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'python3.8 manage.py migrate --settings=marketingsite.envs.dev' echo "** Marketing: Compiling assets **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'rm -rf node_modules/' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'yarn' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'npm run dev' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'rm -rf node_modules/' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'yarn' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec mktg bash -c 'npm run dev' echo "** Marketing: Restarting **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` restart mktg +docker compose `echo ${DOCKER_COMPOSE_FILES}` restart mktg diff --git a/provision-progs.sh b/provision-progs.sh index a82cf9464d..e9cd061c64 100755 --- a/provision-progs.sh +++ b/provision-progs.sh @@ -1,30 +1,30 @@ set -e echo "** Bring progs up **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` up -d progs +docker compose `echo ${DOCKER_COMPOSE_FILES}` up -d progs echo "** Creating databases **" echo "CREATE DATABASE IF NOT EXISTS edraakprograms;" | docker exec -i edx.devstack.mysql mysql -uroot mysql echo "** Progs: Setting correct python version **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'update-alternatives --install /usr/bin/python python /usr/bin/python3.8 1' echo "** Progs: Copy cacheed files to code dir **" -#docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'cp -Rn /cache/* /app/.' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'pip install -r requirements.txt' +#docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'cp -Rn /cache/* /app/.' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'pip3 install -r requirements.txt' echo "** Progs: Migrating databases **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'python manage.py migrate --settings=edraakprograms.dev' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'python3.8 manage.py migrate --settings=edraakprograms.dev' echo "** Progs: Compiling assets **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'npm rebuild node-sass' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'chown -R root ~/.npm' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'rm -rf node_modules/' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'npm install' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'npm rebuild node-sass' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'chown -R root ~/.npm' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'rm -rf node_modules/' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'npm install' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'npm run dev' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'python manage.py collectstatic --ignore="*.less" --ignore="*.scss" --noinput --clear --settings=edraakprograms.static' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'npm run dev' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec progs bash -c 'python manage.py collectstatic --ignore="*.less" --ignore="*.scss" --noinput --clear --settings=edraakprograms.static' echo "** Progs: Restarting **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` restart progs +docker compose `echo ${DOCKER_COMPOSE_FILES}` restart progs diff --git a/provision-state-manager-api.sh b/provision-state-manager-api.sh index ff9b308d2a..fb94246e8e 100755 --- a/provision-state-manager-api.sh +++ b/provision-state-manager-api.sh @@ -1,8 +1,8 @@ set -e echo "** state-manager-api: starting **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` up -d state-manager-api -docker-compose `echo ${DOCKER_COMPOSE_FILES}` up -d state-manager-mysql +docker compose `echo ${DOCKER_COMPOSE_FILES}` up -d state-manager-api +docker compose `echo ${DOCKER_COMPOSE_FILES}` up -d state-manager-mysql echo "Waiting for state-manager-mysql" until docker exec -i edraak.devstack.state_manager_mysql mysql -uroot -se "SELECT EXISTS(SELECT 1 FROM mysql.user WHERE user = 'root')" &> /dev/null @@ -15,9 +15,9 @@ done sleep 5 echo "** state-manager-api: Create/Upgrade DB **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec state-manager-api bash -c 'flask create-db' -docker-compose `echo ${DOCKER_COMPOSE_FILES}` exec state-manager-api bash -c 'flask db upgrade' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec state-manager-api bash -c 'flask create-db' +docker compose `echo ${DOCKER_COMPOSE_FILES}` exec state-manager-api bash -c 'flask db upgrade' echo "** state-manager-api: Restarting **" -docker-compose `echo ${DOCKER_COMPOSE_FILES}` restart state-manager-api +docker compose `echo ${DOCKER_COMPOSE_FILES}` restart state-manager-api diff --git a/provision.sh b/provision.sh index 0f043f6d85..977330ab44 100755 --- a/provision.sh +++ b/provision.sh @@ -23,7 +23,7 @@ if [ "$MOUNT_TYPE" = "-nfs" ]; then fi # Bring the databases online. -docker-compose up -d mysql mongo +docker compose up -d mysql mongo # Ensure the MySQL server is online and usable echo "Waiting for MySQL" @@ -38,14 +38,14 @@ done sleep 10 printf "Creating mongo usres" -docker exec -i edx.devstack.mongo mongo < mongo-provision.js +docker exec -i edx.devstack.mongo mongosh < mongo-provision.js echo -e "MySQL ready" if $ENABLE_EDX; then ./provision-lms.sh # Nothing special needed for studio - docker-compose `echo ${DOCKER_COMPOSE_FILES}` up -d studio + #docker compose `echo ${DOCKER_COMPOSE_FILES}` up -d studio fi diff --git a/provision.sql b/provision.sql old mode 100644 new mode 100755 index 60692a4f42..cb25769f16 --- a/provision.sql +++ b/provision.sql @@ -1,21 +1,27 @@ CREATE DATABASE IF NOT EXISTS credentials; -GRANT ALL ON credentials.* TO 'credentials001'@'%' IDENTIFIED BY 'password'; +CREATE USER IF NOT EXISTS 'credentials001'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; +GRANT ALL ON credentials.* TO 'credentials001'@'%'; CREATE DATABASE IF NOT EXISTS discovery; -GRANT ALL ON discovery.* TO 'discov001'@'%' IDENTIFIED BY 'password'; +CREATE USER IF NOT EXISTS 'discov001'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; +GRANT ALL ON discovery.* TO 'discov001'@'%'; CREATE DATABASE IF NOT EXISTS ecommerce; -GRANT ALL ON ecommerce.* TO 'ecomm001'@'%' IDENTIFIED BY 'password'; +CREATE USER IF NOT EXISTS 'ecomm001'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; +GRANT ALL ON ecommerce.* TO 'ecomm001'@'%'; CREATE DATABASE IF NOT EXISTS edxmktg; -GRANT ALL ON edxmktg.* TO 'edxmktg001'@'%' IDENTIFIED BY 'password'; +CREATE USER IF NOT EXISTS 'edxmktg001'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; +GRANT ALL ON edxmktg.* TO 'edxmktg001'@'%'; CREATE DATABASE IF NOT EXISTS notes; -GRANT ALL ON notes.* TO 'notes001'@'%' IDENTIFIED BY 'password'; +CREATE USER IF NOT EXISTS 'notes001'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; +GRANT ALL ON notes.* TO 'notes001'@'%'; CREATE DATABASE IF NOT EXISTS edxapp; CREATE DATABASE IF NOT EXISTS edxapp_csmh; -GRANT ALL ON edxapp.* TO 'edxapp001'@'%' IDENTIFIED BY 'password'; +CREATE USER IF NOT EXISTS 'edxapp001'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; +GRANT ALL ON edxapp.* TO 'edxapp001'@'%'; GRANT ALL ON edxapp_csmh.* TO 'edxapp001'@'%'; FLUSH PRIVILEGES; diff --git a/setup_native_nfs_docker_osx.sh b/setup_native_nfs_docker_osx.sh index 9a7d6fd93d..6abdab8d9a 100755 --- a/setup_native_nfs_docker_osx.sh +++ b/setup_native_nfs_docker_osx.sh @@ -39,7 +39,7 @@ open -a Docker while ! docker ps > /dev/null 2>&1 ; do sleep 2; done echo "== Stopping running docker containers..." -docker-compose down > /dev/null 2>&1 +docker compose down > /dev/null 2>&1 docker volume prune -f > /dev/null osascript -e 'quit app "Docker"'