Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

add --with-env flag to publish command #12482

Merged
merged 1 commit into from
Jan 29, 2025

Conversation

glours
Copy link
Contributor

@glours glours commented Jan 21, 2025

this flag allow publishing env variables in the Compose OCI artifact

What I did
Add --with-env flag to let user explicitly optin the publication of env variables in the OCI artifact

Related issue
https://docker.atlassian.net/browse/COMP-873

(not mandatory) A picture of a cute animal, if possible in relation to what you did
image

@glours glours requested a review from a team as a code owner January 21, 2025 08:56
@glours glours requested review from ndeloof and aevesdocker January 21, 2025 08:56
@glours glours self-assigned this Jan 21, 2025
@glours
Copy link
Contributor Author

glours commented Jan 21, 2025

@aevesdocker can you check if the new error message is ok for you? 😇 🙏

@glours
Copy link
Contributor Author

glours commented Jan 21, 2025

@ndeloof I wonder if we should not just set all env variables to empty strings when publishing? 🤔
This way we'll push the env variables needed to run the application without sending sensitive data and we'll be able to ask consumers to set values when doing an docker compose -f oci://... up, wdyt?

docs/reference/compose_alpha_publish.md Outdated Show resolved Hide resolved
docs/reference/compose_alpha_publish.md Outdated Show resolved Hide resolved
@glours glours force-pushed the add-with-env-flag-publish branch from beb234e to 72bde6f Compare January 21, 2025 09:11
" or remove sensitive data from your Compose configuration", service.Name)
}
if len(service.Environment) > 0 {
return fmt.Errorf("service %q has environment variable(s) declared. To avoid leaking sensitive data, "+
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

service.environment may be set with a fixed value, not relying on any interpolation. Typically:

db:
    image: mysql
    environment:
      MYSQL_DATABASE: avatar
      MYSQL_ROOT_PASSWORD_FILE: /run/secrets/db-password

those should not prevent compose file to be published, right ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In fact yes that should prevent from publishing by default because you can also have MYSQL_ROOT_PASSWORD: mySuperSecretPassword defined the same way

Copy link
Contributor

@ndeloof ndeloof left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder the approach is correct.
IIUC the goal is to detect the compose file doesn't require env var to be set by user / risk user environment to leak. To prevent this, better load the compose model without any variable passed to interpolation, which will fail if some is needed.

@glours
Copy link
Contributor Author

glours commented Jan 21, 2025

After internal discussions with @ndeloof , we have decided to maintain the defensive approach for now. If, based on usage and user feedback, we find this behavior too restrictive, we will keep the option of filtering only interpolated environment variables.

@glours glours force-pushed the add-with-env-flag-publish branch from 72bde6f to 999abcd Compare January 28, 2025 16:01
@glours glours requested a review from ndeloof January 28, 2025 16:21
@glours glours force-pushed the add-with-env-flag-publish branch from 999abcd to 8f04185 Compare January 29, 2025 14:19
this flag allow publishing env variables in the Compose OCI artifact

Signed-off-by: Guillaume Lours <[email protected]>
@glours glours force-pushed the add-with-env-flag-publish branch from 8f04185 to 290684a Compare January 29, 2025 14:37
@glours glours enabled auto-merge (rebase) January 29, 2025 14:41
@glours glours merged commit 8402888 into docker:main Jan 29, 2025
25 checks passed
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Feb 13, 2025
This MR contains the following updates:

| Package | Update | Change |
|---|---|---|
| [docker/compose](https://github.com/docker/compose) | minor | `v2.32.4` -> `v2.33.0` |

MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).

**Proposed changes to behavior should be submitted there as MRs.**

---

### Release Notes

<details>
<summary>docker/compose (docker/compose)</summary>

### [`v2.33.0`](https://github.com/docker/compose/releases/tag/v2.33.0)

[Compare Source](docker/compose@v2.32.4...v2.33.0)

#### What's Changed

> \[!IMPORTANT]
> This release introduce support for [Bake](https://docs.docker.com/build/bake/) to manage builds as an alternative to the internal buildkit client. This new feature can be enabled by setting `COMPOSE_BAKE=1` variable. Bake will become the default builder in a future release.

##### ✨ Improvements

-   let user know bake is now supported by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12524
-   support additional_context reference to another service by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12485
-   add support for BUILDKIT_PROGRESS by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12458
-   add --with-env flag to publish command by [@&#8203;glours](https://github.com/glours) in docker/compose#12482
-   Update ls --quiet help description by [@&#8203;maxproske](https://github.com/maxproske) in docker/compose#12541
-   Publish warn display env vars by [@&#8203;glours](https://github.com/glours) in docker/compose#12486

##### 🐛 Fixes

-   Fix bake support by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12507
-   Update link in stats --help output by [@&#8203;maxproske](https://github.com/maxproske) in docker/compose#12523
-   Properly handle "builtin" seccomp profile by [@&#8203;r-bk](https://github.com/r-bk) in docker/compose#12478
-   manage `watch` applied to mulitple services by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12469

##### 🔧  Internal

-   use main branch for docs upstream validation workflow by [@&#8203;crazy-max](https://github.com/crazy-max) in docker/compose#12487
-   fix provenance for binaries and generate sbom by [@&#8203;crazy-max](https://github.com/crazy-max) in docker/compose#12479
-   add codeowners file by [@&#8203;glours](https://github.com/glours) in docker/compose#12480
-   remove exit code per error type used by legacy metrics system by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12502
-   Dockerfile: update golangci-lint to v1.63.4 by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12546
-   Full test coverage for compatibility cmd by [@&#8203;maxproske](https://github.com/maxproske) in docker/compose#12528
-   don't send raw os.Args to opentelemetry but a pseudo command line by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12530
-   add docker engine v28.x to the test-matrix by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12539
-   enable copyloopvar linter by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12542
-   go.mod: remove toolchain directive by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12551

##### ⚙️ Dependencies

-   bump buildx v0.20.1 by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12488
-   bump docker to v27.5.1 by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12491
-   bump compose-go v2.4.8 by [@&#8203;ndeloof](https://github.com/ndeloof) in docker/compose#12543
-   bump golang.org/x/sys from 0.28.0 to 0.30.0 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12529
-   bump github.com/moby/term v0.5.2 by [@&#8203;thaJeztah](https://github.com/thaJeztah) in docker/compose#12540
-   bump github.com/otiai10/copy from 1.14.0 to 1.14.1 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12493
-   bump github.com/jonboulle/clockwork from 0.4.0 to 0.5.0 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12430
-   bump github.com/spf13/pflag from 1.0.5 to 1.0.6 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12548
-   bump golang.org/x/sync from 0.10.0 to 0.11.0 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12547
-   bump gotest.tools/v3 from 3.5.1 to 3.5.2 by [@&#8203;dependabot](https://github.com/dependabot) in docker/compose#12549

#### New Contributors

-   [@&#8203;r-bk](https://github.com/r-bk) made their first contribution in docker/compose#12478
-   [@&#8203;maxproske](https://github.com/maxproske) made their first contribution in docker/compose#12523

**Full Changelog**: docker/compose@v2.32.4...v2.33.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this MR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box

---

This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjYuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants