Setting up apigee local dev

i am trying to setup apigee with local docker i am using 1.15.2 emulator version once i am trying to install the emulator it started the docker image which i can see but in vscode i am getting below error :

Error: Could not find the newly created container 1.15.2-local

Hi @supriyokumar274 ,

You’re hitting a known issue with Cloud Code’s Apigee emulator integration, where the container is successfully created in Docker, but VS Code fails to detect it due to internal tracking expectations.

What’s actually happening
Cloud Code does not just look for a running container by name — it expects:

  • A container it created itself
  • With specific labels and metadata
  • Matching its internal lifecycle tracking

In your case:

  • The container (1.15.2-local) is clearly running (docker container ls)
  • But Cloud Code throws:
Could not find the newly created container 1.15.2-local

This indicates a state mismatch, not a runtime failure.

Most likely causes

  1. Stale container from previous attempts
  2. Container created outside Cloud Code control
  3. Missing expected Docker labels
  4. Race condition during startup detection

Recommended fix (clean reset)
Run the following:

docker stop 1.15.2-local
docker rm 1.15.2-local
docker rmi gcr.io/apigee-release/hybrid/apigee-emulator:1.15.2

Then:

  1. Restart VS Code
  2. Reinstall via:
Cloud Code → Apigee → Install Emulator

Note: Do NOT start the container manually

Additional checks
If the issue persists:

  • Inspect container labels:
docker inspect 1.15.2-local

Cloud Code expects specific labels — if missing, it won’t recognize the container.

  • Try attaching manually:
Cloud Code → Apigee → Attach to Emulator

Important note
If your container is running and mapped (e.g. localhost:8998 responds), then:

The emulator is working — the issue is purely with VS Code detection, not Docker or Apigee itself.

Summary
This is a Cloud Code container discovery issue, typically caused by stale state or mismatch in expected metadata. A clean reinstall via VS Code usually resolves it.

Regards,
LAVIQ

1 Like

hey i tried same reinstall docker and everything , i tried below command also :

ocker inspect apigee-local
[
{
“Id”: “a705a31d2378876d433d2f56a288ff70e2a987ee410cbf6937d0ea46d2eeff25”,
“Created”: “2026-03-26T09:47:46.27975572Z”,
“Path”: “/usr/bin/dumb-init”,
“Args”: [
“/bin/bash”,
“/opt/apigee/emulator-entry.sh”
],
“State”: {
“Status”: “running”,
“Running”: true,
“Paused”: false,
“Restarting”: false,
“OOMKilled”: false,
“Dead”: false,
“Pid”: 714,
“ExitCode”: 0,
“Error”: “”,
“StartedAt”: “2026-03-26T09:47:51.776863792Z”,
“FinishedAt”: “0001-01-01T00:00:00Z”
},
“Image”: “sha256:a3d92e94aceca19cf3bd4f87fea0fe021d1815566ddd3f533da81d0eb38876b2”,
“ResolvConfPath”: “/var/lib/docker/containers/a705a31d2378876d433d2f56a288ff70e2a987ee410cbf6937d0ea46d2eeff25/resolv.conf”,
“HostnamePath”: “/var/lib/docker/containers/a705a31d2378876d433d2f56a288ff70e2a987ee410cbf6937d0ea46d2eeff25/hostname”,
“HostsPath”: “/var/lib/docker/containers/a705a31d2378876d433d2f56a288ff70e2a987ee410cbf6937d0ea46d2eeff25/hosts”,
“LogPath”: “/var/lib/docker/containers/a705a31d2378876d433d2f56a288ff70e2a987ee410cbf6937d0ea46d2eeff25/a705a31d2378876d433d2f56a288ff70e2a987ee410cbf6937d0ea46d2eeff25-json.log”,
“Name”: “/apigee-local”,
“RestartCount”: 0,
“Driver”: “overlayfs”,
“Platform”: “linux”,
“MountLabel”: “”,
“ProcessLabel”: “”,
“AppArmorProfile”: “”,
“ExecIDs”: null,
“HostConfig”: {
“Binds”: null,
“ContainerIDFile”: “”,
“LogConfig”: {
“Type”: “json-file”,
“Config”: {}
},
“NetworkMode”: “bridge”,
“PortBindings”: {
“8080/tcp”: [
{
“HostIp”: “”,
“HostPort”: “8080”
}
],
“8998/tcp”: [
{
“HostIp”: “”,
“HostPort”: “8998”
}
]
},
“RestartPolicy”: {
“Name”: “no”,
“MaximumRetryCount”: 0
},
“AutoRemove”: false,
“VolumeDriver”: “”,
“VolumesFrom”: null,
“ConsoleSize”: [
0,
0
],
“CapAdd”: null,
“CapDrop”: null,
“CgroupnsMode”: “private”,
“Dns”: [
“8.8.8.8”
],
“DnsOptions”: ,
“DnsSearch”: ,
“ExtraHosts”: null,
“GroupAdd”: null,
“IpcMode”: “private”,
“Cgroup”: “”,
“Links”: null,
“OomScoreAdj”: 0,
“PidMode”: “”,
“Privileged”: true,
“PublishAllPorts”: false,
“ReadonlyRootfs”: false,
“SecurityOpt”: [
“label=disable”
],
“UTSMode”: “”,
“UsernsMode”: “”,
“ShmSize”: 67108864,
“Runtime”: “runc”,
“Isolation”: “”,
“CpuShares”: 0,
“Memory”: 0,
“NanoCpus”: 0,
“CgroupParent”: “”,
“BlkioWeight”: 0,
“BlkioWeightDevice”: ,
“BlkioDeviceReadBps”: ,
“BlkioDeviceWriteBps”: ,
“BlkioDeviceReadIOps”: ,
“BlkioDeviceWriteIOps”: ,
“CpuPeriod”: 0,
“CpuQuota”: 0,
“CpuRealtimePeriod”: 0,
“CpuRealtimeRuntime”: 0,
“CpusetCpus”: “”,
“CpusetMems”: “”,
“Devices”: ,
“DeviceCgroupRules”: null,
“DeviceRequests”: null,
“MemoryReservation”: 0,
“MemorySwap”: 0,
“MemorySwappiness”: null,
“OomKillDisable”: null,
“PidsLimit”: null,
“Ulimits”: ,
“CpuCount”: 0,
“CpuPercent”: 0,
“IOMaximumIOps”: 0,
“IOMaximumBandwidth”: 0,
“MaskedPaths”: null,
“ReadonlyPaths”: null
},
“Storage”: {
“RootFS”: {
“Snapshot”: {
“Name”: “overlayfs”
}
}
},
“Mounts”: [
{
“Type”: “volume”,
“Name”: “4e5409671df6887eedc2258ce864d70db681f1bdf7d9b0dbdc6e2905d796b761”,
“Source”: “/var/lib/docker/volumes/4e5409671df6887eedc2258ce864d70db681f1bdf7d9b0dbdc6e2905d796b761/_data”,
“Destination”: “/opt/apigee/apigee-cassandra”,
“Driver”: “local”,
“Mode”: “”,
“RW”: true,
“Propagation”: “”
}
],
“Config”: {
“Hostname”: “a705a31d2378”,
“Domainname”: “”,
“User”: “apigee”,
“AttachStdin”: false,
“AttachStdout”: false,
“AttachStderr”: false,
“ExposedPorts”: {
“7000/tcp”: {},
“7001/tcp”: {},
“7199/tcp”: {},
“8080/tcp”: {},
“8998/tcp”: {},
“9042/tcp”: {},
“9160/tcp”: {}
},
“Tty”: false,
“OpenStdin”: false,
“StdinOnce”: false,
“Env”: [
“XTERM=xterm-256color”,
“PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64/bin:/opt/apigee/apigee-cassandra/bin”,
“SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt”,
“LANG=C.UTF-8”,
“JAVA_HOME=/usr/lib/jvm/adoptopenjdk-8-hotspot-amd64”,
“CASSANDRA_HOME=/opt/apigee/apigee-cassandra”,
“CASSANDRA_CONF=/opt/apigee/apigee-cassandra/conf”,
“CASSANDRA_DATA=/opt/apigee/data/apigee-cassandra”,
“CASSANDRA_SCRIPT=/opt/apigee/apigee-cassandra/scripts/”,
“CASSANDRA_LOGS=/var/log/cassandra”,
“APIGEE_CASSANDRA_CLUSTER_NAME=”,
“CASSANDRA_VERSION=4.0.12”,
“APPLICATION=emulator”,
“APIGEE_PREFIX=apigee-”,
“APIGEE_APPLICATION=apigee-emulator”,
“APIGEE_ROOT=/opt/apigee”,
“APIGEE_HOME=/opt/apigee”,
“APIGEE_DATA=/opt/apigee/data”,
“APIGEE_VAR_DIR=/opt/apigee/var”,
“APIGEE_APP_DATADIR=/opt/apigee/data/apigee-emulator”,
“APIGEE_APP_LOGDIR=/opt/apigee/var/log/apigee-emulator”,
“CASSANDRA_DATA_DIR=/opt/apigee/data/apigee-cassandra”,
“COMPONENT_NAME=apigee-emulator”,
“COMPONENT_ROOT=/opt/apigee/apigee-emulator”,
“COMPONENT_BIN=/opt/apigee/apigee-emulator/bin”,
“COMPONENT_LIB=/opt/apigee/apigee-emulator/lib”,
“RUN_USER=apigee”,
“RUN_GROUP=apigee”,
“microkernel_installType=hybrid”,
“microkernel_application=emulator”,
“APIGEE_ORG=hybrid”,
“APIGEE_ENV=test”,
“LISTEN_ADDRESS=127.0.0.1”,
“GOOGLE_APPLICATION_CREDENTIALS=”,
“FORWARD_PROXY=”,
“APIGEE_CASSANDRA_LISTEN_ADDRESS=127.0.0.1”,
“CASSANDRA_DC=dc-1”,
“CASSANDRA_RACK=rack-1”
],
“Cmd”: null,
“Image”: “Artifact Registry documentation  |  Google Cloud Documentation,
“Volumes”: {
“/opt/apigee/apigee-cassandra”: {}
},
“WorkingDir”: “/opt/apigee/”,
“Entrypoint”: [
“/usr/bin/dumb-init”,
“/bin/bash”,
“/opt/apigee/emulator-entry.sh”
],
“Labels”: {
“com.apigee.hybrid_planet.name”: “”,
“maintainer”: “edgefeatureplatform@google.com”,
“org.label-schema.build-date”: “”,
“org.label-schema.docker.dockerfile”: “/Dockerfile”,
“org.label-schema.license”: “Apache License 2.0”,
“org.label-schema.name”: “k8s-for-greeks/docker-cassandra-k8s”,
“org.label-schema.url”: “https://github.com/k8s-for-greeks/”,
“org.label-schema.vcs-ref”: “”,
“org.label-schema.vcs-type”: “Git”,
“org.label-schema.vcs-url”: “https://github.com/k8s-for-greeks/docker-cassandra-k8s”
},
“StopTimeout”: 1
},
“NetworkSettings”: {
“SandboxID”: “de7f1969b25e3e87ace0514cf6443504da0d3c4dc86ae13fa878e085c0bfeab8”,
“SandboxKey”: “/var/run/docker/netns/de7f1969b25e”,
“Ports”: {
“8080/tcp”: [
{
“HostIp”: “0.0.0.0”,
“HostPort”: “8080”
},
{
“HostIp”: “::”,
“HostPort”: “8080”
}
],
“8998/tcp”: [
{
“HostIp”: “0.0.0.0”,
“HostPort”: “8998”
},
{
“HostIp”: “::”,
“HostPort”: “8998”
}
]
},
“Networks”: {
“bridge”: {
“IPAMConfig”: null,
“Links”: null,
“Aliases”: null,
“DriverOpts”: null,
“GwPriority”: 0,
“NetworkID”: “7cae15b82d3af42c93f4512be6767ce5a6cef3ce17efb17b87b5cf9fd23ff5ed”,
“EndpointID”: “4f040f2fa2841d92d28d8eb210ab7ba99d3ebdb57a61129ec240d11f22a89ad2”,
“Gateway”: “172.17.0.1”,
“IPAddress”: “172.17.0.2”,
“MacAddress”: “3a:5f:07:e6:83:36”,
“IPPrefixLen”: 16,
“IPv6Gateway”: “”,
“GlobalIPv6Address”: “”,
“GlobalIPv6PrefixLen”: 0,
“DNSNames”: null
}
}
},
“ImageManifestDescriptor”: {
“mediaType”: “application/vnd.docker.distribution.manifest.v2+json”,
“digest”: “sha256:a3d92e94aceca19cf3bd4f87fea0fe021d1815566ddd3f533da81d0eb38876b2”,
“size”: 5963,
“platform”: {
“architecture”: “amd64”,
“os”: “linux”
}
}
}
]

but still same issue , its not able to recognize i tried Cloud Code → Apigee → Attach to Emulator manually but how to attach manually i am not able to see any option like this

Hi @supriyokumar274,

Thanks for sharing the full docker inspect output — that helps a lot.

At this point, it’s clear this is not an Apigee emulator startup issue. The container is running correctly. The problem is specifically with Cloud Code’s container discovery mechanism.

Key observation

From your inspect output:

"Name": "/apigee-local"

But earlier, Cloud Code was trying to find:

1.15.2-local

This mismatch is the root cause.

Cloud Code does not simply detect any running emulator container — it expects a container with:

  • a specific name (generated during install)
  • a matching internal state (tracked by the extension)

If those don’t align, you get:
Could not find the newly created container

Why this happens

Even after reinstalling Docker, this can still occur because:

  • Cloud Code caches state internally
  • Container name differs from what Cloud Code expects
  • Previous failed install attempt left stale metadata
  • Emulator container is created, but not registered in extension lifecycle

Your output confirms:

  • Container is healthy
  • Ports are exposed
  • Emulator entrypoint is correct

So the issue is **purely VS Code ↔ Docker state mismatch

What actually fixes it**

A full reset needs to include Docker + Cloud Code state, not just Docker.

1. Remove ALL Apigee containers

docker ps -a
docker stop apigee-local 2>/dev/null
docker rm apigee-local 2>/dev/null
docker stop 1.15.2-local 2>/dev/null
docker rm 1.15.2-local 2>/dev/null

2. Remove volumes (important)
Your inspect shows a Cassandra volume — this can preserve stale state:
docker volume prune

3. Clear Cloud Code extension state (critical step)

Completely quit VS Code, then remove cached state:

macOS paths:

~/Library/Application Support/Code/User/globalStorage
~/Library/Application Support/Code/User/workspaceStorage

Delete folders related to:

cloudcode
google
apigee

4. Reinstall Cloud Code extension
Not just reload — uninstall and reinstall.

5. Verify Docker context
Make sure VS Code and the terminal use same daemon:
docker context show

6. Reinstall emulator ONLY via VS Code
Do NOT run docker manually.

Important takeaway

Your emulator is already working at Docker level.

If you hit:

http://localhost:8998

and it responds, then:

The failure is entirely in Cloud Code’s detection logic, not the emulator itself.

If after all this, Cloud Code still looks for 1.15.2-local while Docker creates apigee-local, then this is very likely:

A Cloud Code bug specific to emulator 1.15.2

In that case, checking the Cloud Code output logs in VS Code will show exactly what container name it expects — that’s usually the final clue.

Regards,
LAVIQ
(https://www.getlaviq.com/)