devcontainers / devcontainers/cli

devcontainer always started with `"Init": true` no matter the settings

Open
#726 5 comments 0 reactions 1 assignee Claimed by @chrmarti View on GitHub
info-needed
Dominant language
TypeScript
Stars
3k
Forks
457
Avg merge
13h 17m
Merged PRs (30d)
6

Description

I'm trying to set `init` to `false` for a devcontainer where I need to control PID 1.

However, no matter how I set init to false, the resulting dev container has init always set to true:
```
╰─ docker inspect life_life_1 | grep Init
"Init": true
```

This also shows in the logs:
```
[2024-01-19T17:33:17.093Z] Docker Compose override file for creating container:
version: "3.8"

services:
'life':
entrypoint: ["/bin/sh", "-c", "echo Container started\n
trap \"exit 0\" 15\n
\n
exec \"$$@\"\n
while sleep 1 & wait $$!; do :; done", "-"]
command: ["/sbin/init"]
init: true
privileged: true
cap_add:
- SYS_PTRACE
- SYS_ADMIN
security_opt:
- seccomp=unconfined
labels:
- 'devcontainer.local_folder=/home/workspaces/ife'
- 'devcontainer.config_file=/home/workspaces/life/.devcontainer/devcontainer.json'
volumes:
- vscode:/vscode
volumes:

vscode:
external: true
```

Here is what I've tried:

1. Setting it in `devcontainer.json`.
This seems to be the most obvious one. Although the [default should actually be `false`](https://containers.dev/implementors/json_reference). This doesn't work, the resulting container will still have `"Init": true`.
```json
{
"name": "life",
"init": false,
...
}
```
2. Setting it in `docker-compose.yml`.
Of course I also set it in my docker-compose.yml, but that just got overridden by devcontainer cli.
3. Setting it in `Dockerfile`.
I've also set it via
```
LABEL devcontainer.metadata='[{ \
"init": false \
}]'
```
as described in the docs, but still in the resulting container it's true.

I've set all these at once to false and still the resulting container has it set to true.

The line of code in question is this one:
https://github.com/devcontainers/cli/blob/47354089b2eacf89b713dde767ca5536c2d6fa60/src/spec-node/imageMetadata.ts#L172
But where could it possibly get a `true` from?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.