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

Compose spec says that top-level name MUST be exposed for interpolation, but it isn't #9530

Closed
AaronBeaudoin opened this issue Jun 2, 2022 · 1 comment · Fixed by compose-spec/compose-go#272
Assignees
Labels

Comments

@AaronBeaudoin
Copy link

Description

According to the Compose spec:

Whenever project name is defined by top-level name or by some custom mechanism, it MUST be exposed for interpolation and environment variable resolution as COMPOSE_PROJECT_NAME

In my compose.yaml file, I want to customize how the project name is formatted in the names of my containers. To accomplish this, I write a compose.yaml file something like this:

name: some_name

services:
  database:
    ...
    container_name: ${COMPOSE_PROJECT_NAME}_database

When I run docker compose up, I get the following:

WARN[0000] The "COMPOSE_PROJECT_NAME" variable is not set. Defaulting to a blank string. 
[+] Running 1/0
 ⠿ Network some_name_default  Created
 ⠋ Container _database.       Creating
Error response from daemon: Invalid container name (_database), only [a-zA-Z0-9][a-zA-Z0-9_.-] are allowed

Steps to reproduce the issue:

  1. Make a compose.yaml file in the same manner I did above.
  2. Run docker compose up.

Describe the results you received:

Docker tells me that the COMPOSE_PROJECT_NAME variable is not set, but according to the spec my top-level name property should have been used as the value for this variable. Unless I'm not interpreting it correctly.

Describe the results you expected:

The COMPOSE_PROJECT_NAME variable was set to some_name and I get a container called some_name_database.

Additional information you deem important (e.g. issue happens only occasionally):

Nothing.

Output of docker compose version:

Docker Compose version v2.5.1

Output of docker info:

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc., v0.8.2)
  compose: Docker Compose (Docker Inc., v2.5.1)
  sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., 0.6.0)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 22
 Server Version: 20.10.14
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc version: v1.0.3-0-gf46b6ba
 init version: de40ad0
 Security Options:
  seccomp
   Profile: default
  cgroupns
 Kernel Version: 5.10.104-linuxkit
 Operating System: Docker Desktop
 OSType: linux
 Architecture: aarch64
 CPUs: 6
 Total Memory: 3.841GiB
 Name: docker-desktop
 ID: G6YO:B6GF:LZLT:32JR:UCSS:VSMQ:ICNM:F3IP:RMAT:CHT4:NRVI:U56P
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 HTTP Proxy: http.docker.internal:3128
 HTTPS Proxy: http.docker.internal:3128
 No Proxy: hubproxy.docker.internal
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  hubproxy.docker.internal:5000
  127.0.0.0/8
 Live Restore Enabled: false

Additional environment details:

I'm on a macOS with an M1 Mac, although that probably doesn't matter in this case.

@AaronBeaudoin AaronBeaudoin changed the title Compose spec says that top-level name must be exposed for interpolation, but it isn't Compose spec says that top-level name MUST be exposed for interpolation, but it isn't Jun 2, 2022
@maxcleme
Copy link
Member

maxcleme commented Jun 3, 2022

@AaronBeaudoin

Thanks for reporting this,

COMPOSE_PROJECT_NAME should indeed be available for interpolation.

Labeling this as bug.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants