Amend all usage of docker-compose to be docker compose (#14954)

* Amend all usage of docker-compose to be docker compose

This is because the ubuntu-latest GHA image no longer supports the V1 compose API, which was breaking our CI.

https://github.com/actions/runner-images/issues/9692

This is a wholesale change, to ensure consistent use of the v2 syntax

* Address subtle container-naming change brough in with docker compose v2

With v1 we had Selenium Grid name containers ..._selenium-hub_1, but with v2
that changed to ...-selenium-hub-1, causing the jq filter to miss when trying
to extract the IP we needed.

* Remove now-redundant docker-compose.yaml version key
This commit is contained in:
Steve Jalim 2024-08-02 19:27:37 +01:00 коммит произвёл GitHub
Родитель 6ec4adb306
Коммит 970e524098
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: B5690EEEBB952194
9 изменённых файлов: 21 добавлений и 22 удалений

Просмотреть файл

@ -1,5 +1,5 @@
DC_CI = "bin/docker-compose.sh"
DC = $(shell which docker-compose)
DC = $(shell which docker) compose
DOCKER = $(shell which docker)
TEST_DOMAIN = www.mozilla.org
POCKET_MODE = Pocket
@ -9,7 +9,7 @@ all: help
help:
@echo "Please use \`make <target>' where <target> is one of"
@echo " build - build docker images for dev"
@echo " run - docker-compose up the entire system for dev"
@echo " run - 'docker compose up' the entire system for dev"
@echo " stop - stop all docker containers"
@echo " kill - kill all docker containers (more forceful than stop)"
@echo " pull - pull the latest production images from Docker Hub"

Просмотреть файл

@ -6,4 +6,4 @@
source docker/bin/set_git_env_vars.sh
docker-compose "$@"
docker compose "$@"

Просмотреть файл

@ -18,7 +18,7 @@ docker cp "bedrock-${CI_JOB_ID}:/app/tests/results" "results-${CI_JOB_ID}"
docker rm "bedrock-${CI_JOB_ID}"
if [ "${DRIVER}" = "Remote" ]; then
docker-compose \
docker compose \
-f ./bin/integration_tests/docker_compose_for_integration_tests.yml \
-p "selenium-hub-${CI_JOB_ID}" \
down --remove-orphans

Просмотреть файл

@ -1,4 +1,3 @@
version: "3"
services:
selenium-hub:
image: selenium/hub:3

Просмотреть файл

@ -18,23 +18,23 @@ then
fi
if [ "${DRIVER}" = "Remote" ]; then
docker-compose \
docker compose \
-f ./bin/integration_tests/docker_compose_for_integration_tests.yml \
-p "selenium-hub-${CI_JOB_ID}" \
up -d selenium-hub
docker-compose \
docker compose \
-f ./bin/integration_tests/docker_compose_for_integration_tests.yml \
-p "selenium-hub-${CI_JOB_ID}" \
up -d --scale ${BROWSER_NAME}=${NUM_BROWSER_NODES} ${BROWSER_NAME}
SELENIUM_HOST="grid"
SELENIUM_PORT=4444
DOCKER_LINKS=(--link selenium-hub-${CI_JOB_ID}_selenium-hub_1:grid --net selenium-hub-${CI_JOB_ID}_default)
DOCKER_LINKS=(--link selenium-hub-${CI_JOB_ID}-selenium-hub-1:grid --net selenium-hub-${CI_JOB_ID}_default)
echo -n "Waiting for Selenium Grid to get ready..."
IP=$(docker inspect selenium-hub-${CI_JOB_ID}_selenium-hub_1 | jq -r .[0].NetworkSettings.Networks[].IPAddress)
IP=$(docker inspect selenium-hub-${CI_JOB_ID}-selenium-hub-1 | jq -r .[0].NetworkSettings.Networks[].IPAddress)
set +e
SELENIUM_READY=$((curl -fs http://${IP}:4444/wd/hub/status | jq -es 'if . == [] then null else .[] | .value.ready end' > /dev/null) || echo "false")
while ! ${SELENIUM_READY}; do

Просмотреть файл

@ -26,12 +26,12 @@ CONTAINER_NAME="bedrock-${GIT_COMMIT}"
rm -rf "${TMP_DIR}"
rm -rf "${TMP_DIR_HASHED}"
# .env file must exist for docker-compose
# .env file must exist for docker compose
touch .env
# have to rerun staticfiles without symlinks or we just copy broken symlinks
docker rm -f "$CONTAINER_NAME" || true
docker-compose run --name "$CONTAINER_NAME" release docker/bin/build_staticfiles.sh --nolink
docker compose run --name "$CONTAINER_NAME" release docker/bin/build_staticfiles.sh --nolink
docker cp "${CONTAINER_NAME}:/app/static" "${TMP_DIR}"
docker rm -f "$CONTAINER_NAME"

Просмотреть файл

@ -5,6 +5,6 @@
set -ex
# Docker-Compose does not remove the running database instace. We cannot use docker-compose
# Docker compose does not remove the running database instace. We cannot use docker compose
# rm here because we re-tagged the image while uploading to DockerHub.
docker rm -f `echo jenkins${JOB_NAME}${BUILD_NUMBER}| sed s/_//g`_db_1

Просмотреть файл

@ -10,4 +10,4 @@ set -exo pipefail
source docker/bin/set_git_env_vars.sh
exec docker-compose run test-image
exec docker compose run test-image

Просмотреть файл

@ -63,7 +63,7 @@ If you don't have or want to use Make you can call the docker and compose comman
.. code-block:: bash
$ docker-compose pull
$ docker compose pull
.. code-block:: bash
@ -73,7 +73,7 @@ Then starting it all is simply
.. code-block:: bash
$ docker-compose up app assets
$ docker compose up app assets
All of this is handled by the ``Makefile`` script and called by Make if you follow the above directions.
You **DO NOT** need to do both.
@ -101,7 +101,7 @@ If you make a change to ``media/static-bundles.json``, you'll need to restart Do
Sometimes stopping Docker doesn't actually kill the images. To be safe, after stopping docker, run
``docker ps`` to ensure the containers were actually stopped. If they have not been stopped, you can force
them by running ``docker-compose kill`` to stop all containers, or ``docker kill <container_name>`` to stop
them by running ``docker compose kill`` to stop all containers, or ``docker kill <container_name>`` to stop
a single container, e.g. ``docker kill bedrock_app_1``.
Local Installation
@ -252,23 +252,23 @@ you've broken something with a change.
Docker
------
We manage our local docker environment with docker-compose and Make. All you need to do here is run::
We manage our local docker environment with docker compose and Make. All you need to do here is run::
$ make test
If you don't have Make you can simply run ``docker-compose run test``.
If you don't have Make you can simply run ``docker compose run test``.
If you'd like to run only a subset of the tests or only one of the test commands you can accomplish
that with a command like the following::
$ docker-compose run test pytest bedrock/firefox
$ docker compose run test pytest bedrock/firefox
This example will run only the unit tests for the ``firefox`` app in bedrock. You can substitute
``pytest bedrock/firefox`` with most any shell command you'd like and it will run in the Docker
container and show you the output. You can also just run ``bash`` to get an interactive shell in
the container which you can then use to run any commands you'd like and inspect the file system::
$ docker-compose run test bash
$ docker compose run test bash
Local
-----
@ -295,9 +295,9 @@ Make it run
Docker
------
You can simply run the ``make run`` script mentioned above, or use docker-compose directly::
You can simply run the ``make run`` script mentioned above, or use docker compose directly::
$ docker-compose up app assets
$ docker compose up app assets
Local
-----