From a4da002f28d3efdeb07743e76885a9112beff6c6 Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Wed, 11 Jan 2023 14:13:38 +0000 Subject: [PATCH 1/4] Add chown for container volumes --- Dockerfile.devcontainer | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/Dockerfile.devcontainer b/Dockerfile.devcontainer index 2dbbd3b1e..28ef59045 100644 --- a/Dockerfile.devcontainer +++ b/Dockerfile.devcontainer @@ -47,3 +47,17 @@ RUN \ poetry==1.3.1 \ && \ true + +RUN \ + mkdir -p \ + /srv/workspace/.venv \ + /srv/workspace/.tox \ + /srv/workspace/.mypy_cache \ + /srv/workspace/.pytest_cache + +RUN \ + chown -R 1000:1000 \ + /srv/workspace/.venv \ + /srv/workspace/.tox \ + /srv/workspace/.mypy_cache \ + /srv/workspace/.pytest_cache From c361b985902947e5ad4553797f33ef29ed91088a Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Thu, 12 Jan 2023 17:07:56 +1000 Subject: [PATCH 2/4] Revert "Add chown for container volumes" This reverts commit a4da002f28d3efdeb07743e76885a9112beff6c6. --- Dockerfile.devcontainer | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/Dockerfile.devcontainer b/Dockerfile.devcontainer index 28ef59045..2dbbd3b1e 100644 --- a/Dockerfile.devcontainer +++ b/Dockerfile.devcontainer @@ -47,17 +47,3 @@ RUN \ poetry==1.3.1 \ && \ true - -RUN \ - mkdir -p \ - /srv/workspace/.venv \ - /srv/workspace/.tox \ - /srv/workspace/.mypy_cache \ - /srv/workspace/.pytest_cache - -RUN \ - chown -R 1000:1000 \ - /srv/workspace/.venv \ - /srv/workspace/.tox \ - /srv/workspace/.mypy_cache \ - /srv/workspace/.pytest_cache From eeffc7fdff4b9ac86deb742fb1b924e6c17d5521 Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Thu, 12 Jan 2023 07:16:18 +0000 Subject: [PATCH 3/4] Add separate docker-compose for devcontainer. Add postCreateCommand to install poetry with all extras flag. --- .devcontainer.json | 5 +++-- docker-compose.devcontainer.yml | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 docker-compose.devcontainer.yml diff --git a/.devcontainer.json b/.devcontainer.json index 951b7b4bc..d67674b64 100644 --- a/.devcontainer.json +++ b/.devcontainer.json @@ -1,5 +1,5 @@ { - "dockerComposeFile": "docker-compose.yml", + "dockerComposeFile": "docker-compose.devcontainer.yml", "service": "devcontainer", "workspaceFolder": "/srv/workspace/", "shutdownAction": "stopCompose", @@ -19,5 +19,6 @@ "EditorConfig.EditorConfig", "paulvarache.vscode-taskfile", "stardog-union.vscode-stardog-languages" - ] + ], + "postCreateCommand": "poetry install --all-extras" } diff --git a/docker-compose.devcontainer.yml b/docker-compose.devcontainer.yml new file mode 100644 index 000000000..f1e29046e --- /dev/null +++ b/docker-compose.devcontainer.yml @@ -0,0 +1,18 @@ +version: "3" + +services: + devcontainer: + build: + context: . + dockerfile: Dockerfile.devcontainer + working_dir: /srv/workspace + environment: + - POETRY_VIRTUALENVS_IN_PROJECT=1 + volumes: + - .:/srv/workspace:z,cached + command: + - /bin/sh + - -c + - | + echo Waiting for shutdown... override the command if this is not what you want. 1>&2 + while sleep 1000; do :; done From f3eb90fd183d69297ade5d12c65f3c2218960d3a Mon Sep 17 00:00:00 2001 From: Edmond Chuc Date: Thu, 12 Jan 2023 15:16:36 +0000 Subject: [PATCH 4/4] Use one docker-compose.yml with a new 'run' service to run one-off commands inside the devcontainer with docker volumes from the host --- .devcontainer.json | 2 +- docker-compose.devcontainer.yml | 18 ------------------ docker-compose.yml | 20 +++++++++++++++----- docs/developers.rst | 8 ++++---- 4 files changed, 20 insertions(+), 28 deletions(-) delete mode 100644 docker-compose.devcontainer.yml diff --git a/.devcontainer.json b/.devcontainer.json index d67674b64..d939b02ec 100644 --- a/.devcontainer.json +++ b/.devcontainer.json @@ -1,5 +1,5 @@ { - "dockerComposeFile": "docker-compose.devcontainer.yml", + "dockerComposeFile": "docker-compose.yml", "service": "devcontainer", "workspaceFolder": "/srv/workspace/", "shutdownAction": "stopCompose", diff --git a/docker-compose.devcontainer.yml b/docker-compose.devcontainer.yml deleted file mode 100644 index f1e29046e..000000000 --- a/docker-compose.devcontainer.yml +++ /dev/null @@ -1,18 +0,0 @@ -version: "3" - -services: - devcontainer: - build: - context: . - dockerfile: Dockerfile.devcontainer - working_dir: /srv/workspace - environment: - - POETRY_VIRTUALENVS_IN_PROJECT=1 - volumes: - - .:/srv/workspace:z,cached - command: - - /bin/sh - - -c - - | - echo Waiting for shutdown... override the command if this is not what you want. 1>&2 - while sleep 1000; do :; done diff --git a/docker-compose.yml b/docker-compose.yml index 3e6377b72..8674b5890 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -10,17 +10,27 @@ services: - POETRY_VIRTUALENVS_IN_PROJECT=1 volumes: - .:/srv/workspace:z,cached - - xdg-cache-home:/root/.cache - - dot-venv:/srv/workspace/.venv - - dot-tox:/srv/workspace/.tox - - dot-mypy-cache:/srv/workspace/.mypy_cache - - dot-pytest-cache:/srv/workspace/.pytest_cache command: - /bin/sh - -c - | echo Waiting for shutdown... override the command if this is not what you want. 1>&2 while sleep 1000; do :; done + + run: + build: + context: . + dockerfile: Dockerfile.devcontainer + working_dir: /srv/workspace + environment: + - POETRY_VIRTUALENVS_IN_PROJECT=1 + volumes: + - .:/srv/workspace:z,cached + - xdg-cache-home:/root/.cache + - dot-venv:/srv/workspace/.venv + - dot-tox:/srv/workspace/.tox + - dot-mypy-cache:/srv/workspace/.mypy_cache + - dot-pytest-cache:/srv/workspace/.pytest_cache volumes: xdg-cache-home: {} dot-venv: {} diff --git a/docs/developers.rst b/docs/developers.rst index befb84644..89fedb339 100644 --- a/docs/developers.rst +++ b/docs/developers.rst @@ -297,16 +297,16 @@ To use the development container directly: docker-compose build # Configure the system for development. - docker-compose run --rm devcontainer task configure + docker-compose run --rm run task configure # Run the validate task inside the devtools container. - docker-compose run --rm devcontainer task validate + docker-compose run --rm run task validate # Run extensive tests inside the devtools container. - docker-compose run --rm devcontainer task EXTENSIVE=true test + docker-compose run --rm run task EXTENSIVE=true test # To get a shell into the devcontainer docker image. - docker-compose run --rm devcontainer bash + docker-compose run --rm run bash The devcontainer also works with `Podman Compose `_.