I've set up a devcontainer enviroment for my nodejs/mongo project. It uses a compose file to setup the services.
When I clone my repo locally then choose "Remote Containers: Rebuild and reopen in Container" it runs without any errors.
I then committed my code and tried to to directly pull it as a container: "Remote Container: Clone repository in Container Volume..." it fails on the docker compose step:
[2022-06-13T23:41:39.167Z] Stop (393 ms): Run: docker-compose -f /workspaces/mrp/.devcontainer/docker-compose.yaml config
[2022-06-13T23:41:39.168Z] Error: Command failed: docker-compose -f /workspaces/mrp/.devcontainer/docker-compose.yaml config
[2022-06-13T23:41:39.168Z] at Fa (/root/.vscode-remote-containers/dist/dev-containers-cli-0.238.2/dist/spec-node/devContainersSpecCLI.js:230:813)
[2022-06-13T23:41:39.169Z] at processTicksAndRejections (internal/process/task_queues.js:95:5)
[2022-06-13T23:41:39.169Z] at async RR (/root/.vscode-remote-containers/dist/dev-containers-cli-0.238.2/dist/spec-node/devContainersSpecCLI.js:204:1340)
[2022-06-13T23:41:39.169Z] at async PR (/root/.vscode-remote-containers/dist/dev-containers-cli-0.238.2/dist/spec-node/devContainersSpecCLI.js:188:2240)
[2022-06-13T23:41:39.169Z] at async zR (/root/.vscode-remote-containers/dist/dev-containers-cli-0.238.2/dist/spec-node/devContainersSpecCLI.js:245:2177)
[2022-06-13T23:41:39.169Z] at async nb (/root/.vscode-remote-containers/dist/dev-containers-cli-0.238.2/dist/spec-node/devContainersSpecCLI.js:245:3110)
[2022-06-13T23:41:39.169Z] at async JR (/root/.vscode-remote-containers/dist/dev-containers-cli-0.238.2/dist/spec-node/devContainersSpecCLI.js:245:13046)
[2022-06-13T23:41:39.169Z] at async KR (/root/.vscode-remote-containers/dist/dev-containers-cli-0.238.2/dist/spec-node/devContainersSpecCLI.js:245:12802)
[2022-06-13T23:41:39.197Z] Stop (1481 ms): Run in container: node /root/.vscode-remote-containers/dist/dev-containers-cli-0.238.2/dist/spec-node/devContainersSpecCLI.js up --workspace-folder /workspaces/mrp --workspace-mount-consistency cached --id-label vsch.local.repository=https://bitbucket.org/zyphox/mrp --id-label vsch.local.repository.volume=mrp-05e2a4497d6b21c3bd90d4e46c67ab18 --id-label vsch.local.repository.folder=mrp --log-level debug --log-format json --config /workspaces/mrp/.devcontainer/devcontainer.json --override-config /tmp/devcontainer-dcd63d13-415a-4798-8161-efd55b913c6d.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=mrp-05e2a4497d6b21c3bd90d4e46c67ab18,target=/workspaces,external=true --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default off --mount-workspace-git-root true
[2022-06-13T23:41:39.197Z] Exit code 1
[2022-06-13T23:41:39.197Z] Start: Run: docker rm -f b8d9563c543cad59c2e9a3f4e744a2384bb8de5b6386b5a0d593e531d8209dab
[2022-06-13T23:41:39.200Z] Command failed: node /root/.vscode-remote-containers/dist/dev-containers-cli-0.238.2/dist/spec-node/devContainersSpecCLI.js up --workspace-folder /workspaces/mrp --workspace-mount-consistency cached --id-label vsch.local.repository=https://bitbucket.org/zyphox/mrp --id-label vsch.local.repository.volume=mrp-05e2a4497d6b21c3bd90d4e46c67ab18 --id-label vsch.local.repository.folder=mrp --log-level debug --log-format json --config /workspaces/mrp/.devcontainer/devcontainer.json --override-config /tmp/devcontainer-dcd63d13-415a-4798-8161-efd55b913c6d.json --default-user-env-probe loginInteractiveShell --mount type=volume,source=mrp-05e2a4497d6b21c3bd90d4e46c67ab18,target=/workspaces,external=true --mount type=volume,source=vscode,target=/vscode,external=true --skip-post-create --update-remote-user-uid-default off --mount-workspace-git-root true
[2022-06-13T23:41:39.201Z] Exit code 1
[2022-06-13T23:41:39.429Z] Stop (11068 ms): Run in container: /bin/sh
[2022-06-13T23:41:39.445Z] Stop (11002 ms): Run in container: /bin/sh
[2022-06-13T23:41:39.445Z] Container server terminated (code: 137, signal: null).
[2022-06-13T23:41:39.846Z] Stop (649 ms): Run: docker rm -f b8d9563c543cad59c2e9a3f4e744a2384bb8de5b6386b5a0d593e531d8209dab
[2022-06-13T23:41:51.954Z] Start: Run: docker version --format {{.Server.APIVersion}}
[2022-06-13T23:41:53.473Z] Stop (1519 ms): Run: docker version --format {{.Server.APIVersion}}
[2022-06-13T23:41:53.473Z] 1.41
This is the exact same compose file as when I locally clone it. If I open docker Desktop and inspect the volume, the correct docker-compose is in the volume.
Here are my devcontainer files:
# devcontainer.json
{
"name": "Zyphox",
"dockerComposeFile": "docker-compose.yaml",
"forwardPorts": [ 80, 27017 ],
"service": "app",
"workspaceFolder": "/workspace",
"shutdownAction": "stopCompose"
}
# docker-compose.yaml
version: "3.8"
services:
mongodb-setup:
image: mongo
restart: on-failure
user: root
networks:
default:
volumes:
- ./scripts/mongosetup.sh:/scripts/mongosetup.sh
entrypoint: [ "sh", "/scripts/mongosetup.sh" ]
depends_on:
- mongodb
mongodb:
hostname: mongodb
image: mongo:5.0.9
environment:
MONGO_INITDB_DATABASE: zyphox
MONGO_REPLICA_SET_NAME: rs0
volumes:
- mongo-data:/data/db
restart: always
entrypoint:
[
"/usr/bin/mongod",
"--bind_ip_all",
"--replSet",
"rs0"
]
app:
build:
context: ..
dockerfile: .devcontainer/Dockerfile.dev
user: root
volumes:
- app:/workspaces/mrp
depends_on:
mongodb-setup:
condition: service_completed_successfully
command: sleep infinity
network_mode: service:mongodb
volumes:
mongo-data:
app:
# Dockerfile.dev
FROM node:16 AS base
WORKDIR /workspace
COPY package*.json .
RUN npm i
COPY . .
ENV NODE_ENV development