Skip to content
This repository was archived by the owner on Aug 1, 2024. It is now read-only.

Commit 676d333

Browse files
author
Rebecca Graber
authored
feat: remove docker-compose from devstack (#1172)
1 parent c0d2b8c commit 676d333

35 files changed

+212
-579
lines changed

.github/workflows/cli-tests.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,17 @@ jobs:
4848
sudo apt update
4949
sudo apt install docker-ce containerd.io
5050
docker version
51-
docker-compose --version
51+
docker compose --version
5252
5353
# Note: we cannot use Docker Desktop because it has not been licensed for use in GithubActions
5454
- name: Docker installation - Mac
5555
if: ${{ matrix.os.name == 'mac' }}
5656
run: |
57-
brew install lima docker
57+
brew install lima docker docker-compose
5858
limactl start --name=default template://docker
5959
echo "DOCKER_HOST=unix:///Users/runner/.lima/default/sock/docker.sock" >> $GITHUB_ENV
60+
mkdir -p ~/.docker/cli-plugins
61+
ln -sfn /usr/local/opt/docker-compose/bin/docker-compose ~/.docker/cli-plugins/docker-compose
6062
6163
- name: Install Python dependencies
6264
run: make requirements

.github/workflows/provisioning-tests.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ jobs:
2828
os:
2929
- ubuntu-20.04 # Ubuntu 20.04 "Focal Fossa"
3030
python-version: [ '3.8' ]
31-
services: [ discovery+lms+forum ,registrar+lms, ecommerce+lms, edx_notes_api+lms, credentials+lms, xqueue]
31+
services: [ discovery+lms+forum ,registrar+lms, ecommerce+lms, edx_notes_api+lms, credentials+lms, xqueue, analyticsapi+insights+lms]
3232
fail-fast: false # some services can be flaky; let others run to completion even if one fails
3333

3434
steps:
@@ -48,7 +48,7 @@ jobs:
4848
sudo apt update
4949
sudo apt install docker-ce containerd.io
5050
docker version
51-
docker-compose --version
51+
docker compose --version
5252
5353
- name: free up disk space
5454
run: sudo apt remove --purge -y ghc-* azure-cli google-cloud-sdk hhvm llvm-* dotnet-* powershell mono-* php* ruby*

Makefile

Lines changed: 50 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ dev.pull.without-deps.%: ## Pull latest Docker images for specific services.
189189
@scripts/send_metrics.py wrap "dev.pull.without-deps.$*"
190190

191191
impl-dev.pull.without-deps.%: ## Pull latest Docker images for specific services.
192-
docker-compose pull $$(echo $* | tr + " ")
192+
docker compose pull $$(echo $* | tr + " ")
193193

194194
dev.pull:
195195
@scripts/send_metrics.py wrap "$@"
@@ -205,7 +205,7 @@ dev.pull.%: ## Pull latest Docker images for services and their dependencies.
205205
@scripts/send_metrics.py wrap "dev.pull.$*"
206206

207207
impl-dev.pull.%: ## Pull latest Docker images for services and their dependencies.
208-
docker-compose pull --include-deps $$(echo $* | tr + " ")
208+
docker compose pull --include-deps $$(echo $* | tr + " ")
209209

210210
########################################################################################
211211
# Developer interface: Database management.
@@ -253,18 +253,18 @@ $(foreach db_service,$(DB_SERVICES_LIST),\
253253
dev.migrate: | $(_db_migration_targets) ## Run migrations for applicable default services.
254254

255255
dev.migrate.cms:
256-
docker-compose exec cms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform/ && make migrate-cms'
256+
docker compose exec cms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform/ && make migrate-cms'
257257

258258
dev.migrate.lms:
259-
docker-compose exec lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform/ && make migrate-lms'
259+
docker compose exec lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform/ && make migrate-lms'
260260

261261
dev.migrate.%: ## Run migrations on a service.
262-
docker-compose exec $* bash -c 'source /edx/app/$*/$*_env && cd /edx/app/$*/$*/ && make migrate'
262+
docker compose exec $* bash -c 'source /edx/app/$*/$*_env && cd /edx/app/$*/$*/ && make migrate'
263263

264264
dev.drop-db: _expects-database.dev.drop-db
265265

266266
dev.drop-db.%: ## Irreversably drop the contents of a MySQL database in each mysql container.
267-
docker-compose exec -T mysql57 bash -c "mysql --execute=\"DROP DATABASE $*;\""
267+
docker compose exec -T mysql57 bash -c "mysql --execute=\"DROP DATABASE $*;\""
268268

269269

270270
########################################################################################
@@ -274,7 +274,7 @@ dev.drop-db.%: ## Irreversably drop the contents of a MySQL database in each mys
274274
dev.up.attach: _expects-service.dev.up.attach
275275

276276
impl-dev.up.attach.%: ## Bring up a service and its dependencies + and attach to it.
277-
docker-compose up $*
277+
docker compose up $*
278278

279279
dev.up.attach.%: ## Bring up a service and its dependencies + and attach to it.
280280
@scripts/send_metrics.py wrap "dev.up.attach.$*"
@@ -298,7 +298,7 @@ dev.up.with-watchers.%: ## Bring up services and their dependencies + asset watc
298298
dev.up.without-deps: _expects-service-list.dev.up.without-deps
299299

300300
impl-dev.up.without-deps.%: dev.check-memory ## Bring up services by themselves.
301-
docker-compose up -d --no-deps $$(echo $* | tr + " ")
301+
docker compose up -d --no-deps $$(echo $* | tr + " ")
302302

303303
dev.up.without-deps.%: ## Bring up services by themselves.
304304
@scripts/send_metrics.py wrap "dev.up.without-deps.$*"
@@ -316,7 +316,7 @@ dev.up.large-and-slow: dev.up.$(DEFAULT_SERVICES) ## Bring up default services.
316316
@echo # at least one statement so that dev.up.% doesn't run too
317317

318318
impl-dev.up.%: dev.check-memory ## Bring up services and their dependencies.
319-
docker-compose up -d $$(echo $* | tr + " ")
319+
docker compose up -d $$(echo $* | tr + " ")
320320
ifeq ($(ALWAYS_CACHE_PROGRAMS),true)
321321
make dev.cache-programs
322322
endif
@@ -326,32 +326,32 @@ dev.up.%:
326326
@scripts/send_metrics.py wrap "dev.up.$*"
327327

328328
dev.ps: ## View list of created services and their statuses.
329-
docker-compose ps
329+
docker compose ps
330330

331331
dev.print-container.%: ## Get the ID of the running container for a given service.
332332
@# Can be run as ``make --silent --no-print-directory dev.print-container.$service`` for just ID.
333-
@echo $$(docker-compose ps --quiet $*)
333+
@echo $$(docker compose ps --quiet $*)
334334

335335
dev.restart-container: ## Restart all service containers.
336-
docker-compose restart $$(echo $* | tr + " ")
336+
docker compose restart $$(echo $* | tr + " ")
337337

338338
dev.restart-container.%: ## Restart specific services' containers.
339-
docker-compose restart $$(echo $* | tr + " ")
339+
docker compose restart $$(echo $* | tr + " ")
340340

341341
dev.stop: ## Stop all running services.
342-
docker-compose stop
342+
docker compose stop
343343

344344
dev.stop.%: ## Stop specific services.
345-
docker-compose stop $$(echo $* | tr + " ")
345+
docker compose stop $$(echo $* | tr + " ")
346346

347347
dev.kill: ## Kill all running services.
348-
docker-compose stop
348+
docker compose stop
349349

350350
dev.kill.%: ## Kill specific services.
351-
docker-compose kill $$(echo $* | tr + " ")
351+
docker compose kill $$(echo $* | tr + " ")
352352

353353
dev.rm-stopped: ## Remove stopped containers. Does not affect running containers.
354-
docker-compose rm --force
354+
docker compose rm --force
355355

356356
dev.down: ## Documentation for a change to naming
357357
@echo "dev.down has been renamed to dev.remove-containers. If this doesn't seem like what you were looking for, you probably want to be using dev.stop instead. See docs for more details."
@@ -360,10 +360,10 @@ dev.down.%:
360360
@echo "dev.down has been renamed to dev.remove-containers. If this doesn't seem like what you were looking for, you probably want to be using dev.stop instead. See docs for more details."
361361

362362
dev.remove-containers: ## Stop and remove containers and networks for all services.
363-
docker-compose down
363+
docker compose down
364364

365365
dev.remove-containers.%: ## Stop and remove containers for specific services.
366-
docker-compose rm --force --stop $$(echo $* | tr + " ")
366+
docker compose rm --force --stop $$(echo $* | tr + " ")
367367

368368

369369
########################################################################################
@@ -382,7 +382,7 @@ dev.check.%: # Run checks for a given service or set of services.
382382
$(WINPTY) bash ./check.sh $*
383383

384384
dev.validate: ## Print effective Docker Compose config, validating files in COMPOSE_FILE.
385-
docker-compose config
385+
docker compose config
386386

387387

388388
########################################################################################
@@ -395,20 +395,20 @@ dev.cache-programs: ## Copy programs from Discovery to Memcached for use in LMS.
395395
dev.restart-devserver: _expects-service.dev.restart-devserver
396396

397397
dev.restart-devserver.forum:
398-
docker-compose exec -T forum bash -c 'kill $$(ps aux | grep "ruby app.rb" | egrep -v "while|grep" | awk "{print \$$2}")'
398+
docker compose exec -T forum bash -c 'kill $$(ps aux | grep "ruby app.rb" | egrep -v "while|grep" | awk "{print \$$2}")'
399399

400400
dev.forum.build-indices: ## Build indices for forum service
401-
docker-compose exec -T forum bash -c "cd forum && source ruby_env && source devstack_forum_env && cd cs_comments_service/ && bin/rake search:rebuild_indices"
401+
docker compose exec -T forum bash -c "cd forum && source ruby_env && source devstack_forum_env && cd cs_comments_service/ && bin/rake search:rebuild_indices"
402402

403403
dev.restart-devserver.%: ## Kill an edX service's development server. Watcher should restart it.
404404
# Applicable to Django services only.
405-
docker-compose exec -T $* bash -c 'kill $$(ps aux | egrep "manage.py ?\w* runserver" | egrep -v "while|grep" | awk "{print \$$2}")'
405+
docker compose exec -T $* bash -c 'kill $$(ps aux | egrep "manage.py ?\w* runserver" | egrep -v "while|grep" | awk "{print \$$2}")'
406406

407407
dev.logs: ## View logs from running containers.
408-
docker-compose logs -f
408+
docker compose logs -f
409409

410410
dev.logs.%: ## View the logs of the specified service container.
411-
docker-compose logs -f --tail=500 $*
411+
docker compose logs -f --tail=500 $*
412412

413413
dev.attach: _expects-service.dev.attach
414414

@@ -418,54 +418,54 @@ dev.attach.%: ## Attach to the specified service container process for debugging
418418
dev.shell: _expects-service.dev.shell
419419

420420
dev.shell.credentials:
421-
docker-compose exec credentials env TERM=$(TERM) bash -c 'source /edx/app/credentials/credentials_env && cd /edx/app/credentials/credentials && /bin/bash'
421+
docker compose exec credentials env TERM=$(TERM) bash -c 'source /edx/app/credentials/credentials_env && cd /edx/app/credentials/credentials && /bin/bash'
422422

423423
dev.shell.discovery:
424-
docker-compose exec discovery env TERM=$(TERM) bash -c '/bin/bash'
424+
docker compose exec discovery env TERM=$(TERM) bash -c '/bin/bash'
425425

426426
dev.shell.ecommerce:
427-
docker-compose exec ecommerce env TERM=$(TERM) /bin/bash
427+
docker compose exec ecommerce env TERM=$(TERM) /bin/bash
428428

429429
dev.shell.registrar:
430-
docker-compose exec registrar env TERM=$(TERM) /bin/bash
430+
docker compose exec registrar env TERM=$(TERM) /bin/bash
431431

432432
dev.shell.xqueue:
433-
docker-compose exec xqueue env TERM=$(TERM) /bin/bash
433+
docker compose exec xqueue env TERM=$(TERM) /bin/bash
434434

435435
dev.shell.lms:
436-
docker-compose exec lms env TERM=$(TERM) bash -c '/bin/bash'
436+
docker compose exec lms env TERM=$(TERM) bash -c '/bin/bash'
437437

438438
dev.shell.lms_watcher:
439-
docker-compose exec lms_watcher env TERM=$(TERM) bash -c '/bin/bash'
439+
docker compose exec lms_watcher env TERM=$(TERM) bash -c '/bin/bash'
440440

441441
dev.shell.cms:
442-
docker-compose exec cms env TERM=$(TERM) bash -c '/bin/bash'
442+
docker compose exec cms env TERM=$(TERM) bash -c '/bin/bash'
443443

444444
dev.shell.cms_watcher:
445-
docker-compose exec cms_watcher env TERM=$(TERM) bash -c '/bin/bash'
445+
docker compose exec cms_watcher env TERM=$(TERM) bash -c '/bin/bash'
446446

447447
dev.shell.xqueue_consumer:
448-
docker-compose exec xqueue_consumer env TERM=$(TERM) /bin/bash
448+
docker compose exec xqueue_consumer env TERM=$(TERM) /bin/bash
449449

450450
dev.shell.analyticsapi:
451451
docker exec -it edx.devstack.analyticsapi env TERM=$(TERM) bash -c '/bin/bash'
452452

453453
dev.shell.insights:
454-
docker-compose exec insights env TERM=$(TERM) bash -c 'eval $$(source /edx/app/insights/insights_env; echo PATH="$$PATH";) && /bin/bash'
454+
docker compose exec insights env TERM=$(TERM) bash -c 'eval $$(source /edx/app/insights/insights_env; echo PATH="$$PATH";) && /bin/bash'
455455

456456
dev.shell.%: ## Run a shell on the specified service's container.
457-
docker-compose exec $* /bin/bash
457+
docker compose exec $* /bin/bash
458458

459459
dev.dbshell:
460-
docker-compose exec mysql57 bash -c "mysql"
460+
docker compose exec mysql57 bash -c "mysql"
461461

462462
dev.dbcopy8.%: ## Copy data from old mysql 5.7 container into a new 8 db
463-
docker-compose exec mysql57 bash -c "mysqldump $*" > .dev/$*.sql
464-
docker-compose exec -T mysql80 bash -c "mysql $*" < .dev/$*.sql
463+
docker compose exec mysql57 bash -c "mysqldump $*" > .dev/$*.sql
464+
docker compose exec -T mysql80 bash -c "mysql $*" < .dev/$*.sql
465465
rm .dev/$*.sql
466466

467467
dev.dbshell.%: ## Run a SQL shell on the given database.
468-
docker-compose exec mysql57 bash -c "mysql $*"
468+
docker compose exec mysql57 bash -c "mysql $*"
469469

470470
# List of Makefile targets to run static asset generation, in the form dev.static.$(service)
471471
# Services will only have their asset generation added here
@@ -478,13 +478,13 @@ $(foreach asset_service,$(ASSET_SERVICES_LIST),\
478478
dev.static: | $(_asset_compilation_targets)
479479

480480
dev.static.lms:
481-
docker-compose exec -T lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform/ && paver update_assets lms'
481+
docker compose exec -T lms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform/ && paver update_assets lms'
482482

483483
dev.static.cms:
484-
docker-compose exec -T cms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform/ && paver update_assets cms'
484+
docker compose exec -T cms bash -c 'source /edx/app/edxapp/edxapp_env && cd /edx/app/edxapp/edx-platform/ && paver update_assets cms'
485485

486486
dev.static.%: ## Rebuild static assets for the specified service's container.
487-
docker-compose exec -T $* bash -c 'source /edx/app/$*/$*_env && cd /edx/app/$*/$*/ && make static'
487+
docker compose exec -T $* bash -c 'source /edx/app/$*/$*_env && cd /edx/app/$*/$*/ && make static'
488488

489489

490490
########################################################################################
@@ -605,18 +605,18 @@ docs: ## generate Sphinx HTML documentation, including API docs
605605

606606
validate-lms-volume: ## Validate that changes to the local workspace are reflected in the LMS container.
607607
touch $(DEVSTACK_WORKSPACE)/edx-platform/testfile
608-
docker-compose exec -T lms ls /edx/app/edxapp/edx-platform/testfile
608+
docker compose exec -T lms ls /edx/app/edxapp/edx-platform/testfile
609609
rm $(DEVSTACK_WORKSPACE)/edx-platform/testfile
610610

611611
vnc-passwords: ## Get the VNC passwords for the Chrome and Firefox Selenium containers.
612-
@docker-compose logs chrome 2>&1 | grep "VNC password" | tail -1
613-
@docker-compose logs firefox 2>&1 | grep "VNC password" | tail -1
612+
@docker compose logs chrome 2>&1 | grep "VNC password" | tail -1
613+
@docker compose logs firefox 2>&1 | grep "VNC password" | tail -1
614614

615615
devpi-password: ## Get the root devpi password for the devpi container.
616-
docker-compose exec devpi bash -c "cat /data/server/.serverpassword"
616+
docker compose exec devpi bash -c "cat /data/server/.serverpassword"
617617

618618
hadoop-application-logs-%: ## View hadoop logs by application Id.
619-
docker-compose exec nodemanager yarn logs -applicationId $*
619+
docker compose exec nodemanager yarn logs -applicationId $*
620620

621621
create-test-course: ## Provisions cms, and ecommerce with course(s) in test-course.json.
622622
$(WINPTY) bash ./course-generator/create-courses.sh --cms --ecommerce course-generator/test-course.json

check.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ run_check() {
4646
if $cmd; then # Run the command itself and check if it succeeded.
4747
succeeded="$succeeded $check_name"
4848
else
49-
docker-compose logs "$service"
49+
docker compose logs "$service"
5050
failed="$failed $check_name"
5151
fi
5252
set -e # Re-enable exit-on-error

course-generator/create-courses.sh

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ echo "Parsing options"
77
container_error=false
88
for arg in "$@"; do
99
if [ $arg == "--cms" ]; then
10-
if [ ! "$(docker-compose exec lms bash -c 'echo "Course will be created for cms"; exit $?')" ]; then
10+
if [ ! "$(docker compose exec lms bash -c 'echo "Course will be created for cms"; exit $?')" ]; then
1111
echo "Issue with cms container"
1212
container_error=true
1313
else
1414
cms=true
1515
fi
1616
elif [ $arg == "--ecommerce" ]; then
17-
if [ ! "$(docker-compose exec ecommerce bash -c 'echo "Course will be created for ecommerce"; exit $?')" ]; then
17+
if [ ! "$(docker compose exec ecommerce bash -c 'echo "Course will be created for ecommerce"; exit $?')" ]; then
1818
echo "Issue with ecommerce container"
1919
container_error=true
2020
else
@@ -42,10 +42,10 @@ done < "${@: -1}"
4242

4343
if $cms ; then
4444
echo "Creating courses on cms."
45-
docker-compose exec lms bash -c "source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py cms --settings=devstack_docker generate_courses '$course_json'"
45+
docker compose exec lms bash -c "source /edx/app/edxapp/edxapp_env && python /edx/app/edxapp/edx-platform/manage.py cms --settings=devstack_docker generate_courses '$course_json'"
4646
fi
4747

4848
if $ecommerce ; then
4949
echo "Creating courses on ecommerce."
50-
docker-compose exec ecommerce bash -c "source /edx/app/ecommerce/ecommerce_env && python /edx/app/ecommerce/ecommerce/manage.py generate_courses '$course_json'"
50+
docker compose exec ecommerce bash -c "source /edx/app/ecommerce/ecommerce_env && python /edx/app/ecommerce/ecommerce/manage.py generate_courses '$course_json'"
5151
fi

0 commit comments

Comments
 (0)