A local Docker Compose setup can run a Node.js app and PostgreSQL together, while Azure Container Instances (ACI) can run a built container image in the cloud. The transition is not automatic: the cloud deployment needs an image it can access, the right database endpoint and secrets, and a separate plan for persistent production data.
How the local-to-cloud workflow fits together
Think of this as two environments joined by a container image, not one Compose stack copied unchanged into the cloud. Locally, Compose defines the app and its dependent database as services. For ACI, the general Microsoft workflow is to build and test an image locally, push it to Azure Container Registry (ACR), then deploy that image to ACI. The exact Notes app repository, its Compose file, image registry, and deployment outcome are not established here, so use the files and commands that belong to your project rather than treating a documentation sample as the app itself.
| Concern | Local development | Azure ACI deployment |
|---|---|---|
| Service discovery | Containers can address one another by Compose service name, such as db. |
Configure the app with the database endpoint actually available to the cloud deployment; the local Compose hostname is not automatically a cloud endpoint. |
| Image | Compose can build the app image as part of starting the stack. | Build and test the image, then make it accessible to ACI, for example by pushing it to ACR. |
| Database data | A named volume can preserve local PostgreSQL data across container recreation. | A local volume says nothing about cloud database persistence, backup, or recovery. |
| Health and troubleshooting | Use Compose service status and logs while developing. | Inspect ACI provisioning state and container logs with Azure CLI. |
These distinctions follow Docker’s Node.js development guide, Docker’s PostgreSQL guide, and Microsoft’s ACI image-preparation tutorial and ACI quickstart.
Run Node.js and PostgreSQL locally with Docker Compose
Compose lets you describe services and their relationship in a project file, then start them together. Docker’s Node.js guide demonstrates a PostgreSQL service, a named data volume, a health check, and Compose Watch for source changes. Its sample starts the stack with:
Free tools Windows power users keep installed
One-click scans. No signup required.
#1 Best Overall
- The Raspberry Pi Pico is a beginner-friendly microcontroller board that uses MicroPython to give you a taste of the Internet of Things and microcontrollers. The RP2040 is a well-designed microprocessor that can be utilized in almost any Internet of Things project. It has enough power to complete the task quickly.
- 【Raspberry Pi RP2040 Microcontroller】Raspberry Pi Pico features Dual-core ARM Cortex M0+ processor, flexible clock running up to 133 MHz. With 264KB of SRAM, and 2MB of on-board Flash memory.Supports up to 16 MB of off chip flash memory via a dedicated QSPI bus
- 【Multiple Software Support】Pico has rich and complete software support, it comes with a complete Rasberry Pi official C/C++ SDK, Micropython SDK.The programming and burning of Pico need to be carried out on the computer. Supported operating systems and computers include:Raspberry Pie with Raspberry Pi OS,Other platforms equipped with Debian based Linux system Computer with MacOS, Computers with Windows, etc.
- 【Rich Hardware Interface】Raspberry Pi Pico has 30 GPIO pins, 4 pins for analog signal input and 26 × multi-function GPIO pins, 2 × SPI, 2 × I2C, 2 × UART, 3 × 12-bit ADC, 16 × controllable PWM channels.USB 1.1 supported by host and device, The installation mode can be flexibly selected by users to facilitate welding with other development boards.
- 【Build Project in Tiny Size】Only 2.1cm*5.1cm ( as small as your thumb). Pico has been designed to use either soldered 0.1" pin-headers or can be used as a surface-mountable 'module'.
docker compose up --build
That command is appropriate when the actual project includes a compatible Compose file; it is not proof that this Notes app uses the same command or configuration. Check the repository’s README and Compose file for service names, environment variable names, ports, and any setup or migration steps.
Use the Compose service name for the database host
When the Node.js app also runs inside Compose, its database host should ordinarily be the PostgreSQL service name, such as db, rather than localhost or a container IP address. Docker explains: “The app service connects to PostgreSQL using the service name (db) as the hostname in the connection string.” See the Docker PostgreSQL guide. Compose DNS resolves service names, which remain useful if a container is restarted and receives a different IP.
For example, if a Compose project names the database service db, a connection string might use db as its host. The username, password, database name, and port in any example must match the project’s configuration; they are not universal defaults. Keep real credentials out of committed Compose files, public repositories, and screenshots.
Rank #2
- with pre-soldered header Raspberry Pi Pico. RP2040 microcontroller chip designed by Raspberry Pi in the United Kingdom
- Dual-core Arm Cortex M0+ processor, flexible clock running up to 133 MHz. 264KB of SRAM, and 2MB of on-board Flash memory.
- Castellated module allows soldering direct to carrier boards. USB 1.1 with device and host support. Low-power sleep and dormant modes. Drag-and-drop programming using mass storage over USB. 26 × multi-function GPIO pins.
- 2 × SPI, 2 × I2C, 2 × UART, 3 × 12-bit ADC, 16 × controllable PWM channels.Accurate clock and timer on-chip.Temperature sensor.
- Accelerated floating-point libraries on-chip.8 × Programmable I/O (PIO) state machines for custom peripheral support
What a named volume does—and does not do
A named volume lets the local database retain its files beyond the lifecycle of an individual container. That is useful for development, but it does not establish that an ACI deployment has durable database storage, backups, or a tested restore process. The available ACI guidance does not specify a production PostgreSQL design for this Notes app. Decide where production data lives and how it is protected before storing real notes in a cloud deployment.
Do these 3 things before closing this tab:
1Fix the driver behind crashes, sound loss and screen glitches2Repair Windows errors before they cause bigger problems3Scan for outdated or missing drivers - takes under a minuteBuild and deploy the app image to ACI
Microsoft’s image-preparation tutorial presents a two-stage flow: build and test the container image locally, then push it to Azure Container Registry and deploy it to ACI. Follow the project’s own build instructions and select a maintained, supported Node.js runtime tag for its dependencies. The tutorial’s pinned node:8.9.3-alpine example is old and should not be copied as a current runtime recommendation.
- Build and test locally. Confirm the app image starts and behaves as expected in the project’s environment before deploying it.
- Push an accessible image. Tag and push the image to a registry ACI can access, such as ACR, following the registry’s current authentication process.
- Configure cloud settings. Set the app’s database endpoint and required credentials for the cloud environment. Do not assume the local Compose hostname or local database volume transfers to ACI.
- Create the ACI deployment. Select the resource group, image, operating system, resources, port, and DNS label appropriate to the app. Microsoft’s quickstart values are illustrative, not universal sizing or cost guidance.
- Inspect state and logs. Check whether provisioning completed and review container logs if the app does not start or respond as expected.
Microsoft’s ACI quickstart shows the Azure CLI pattern below. Replace the example values with the actual resource group, image, region, port, and DNS label for your deployment:
Rank #3
- ALL-IN-ONE INTERACTIVE DEVELOPMENT KIT: Combines a 3.5-inch 320×480 capacitive touchscreen, Mini PSP joystick, RGB LED, buzzer, and two buttons for interactive Pico projects.
- WIDE PICO COMPATIBILITY: Designed for Raspberry Pi Pico, Pico W, Pico 2, and Pico 2W series boards. Plug in a compatible Pico and start developing without soldering.
- TOUCHSCREEN & CONTROLS: Create calculators, menus, control panels, games, and graphical interfaces using the 3.5-inch capacitive touchscreen, joystick, and dual buttons.
- GPIO & POWER EXPANSION: Provides full 40-pin GPIO access plus 3.3V and 5V power interfaces, making it convenient to connect additional hardware for DIY projects.
- BUILT FOR STEM & DIY: Equipped with online documents and video tutorials for comprehensive guidance; suitable for STEAM classrooms, allowing students to make their own Pico small computer in 10 minutes, perfect for programming learning and project practice.
az group create --name myResourceGroup --location eastus
az container create --resource-group myResourceGroup --name mycontainer --image mcr.microsoft.com/azuredocs/aci-helloworld --dns-name-label <unique-dns-label> --ports 80
az container show --resource-group myResourceGroup --name mycontainer --query "{FQDN:ipAddress.fqdn, provisioningState:provisioningState}" --out table
az container logs --resource-group myResourceGroup --name mycontainer
The quickstart’s example image and port belong to its sample, not a Notes app. A DNS name label must be unique within the Azure region. Its `az container show` example reports the fully qualified domain name (FQDN) and provisioning state; `az container logs` retrieves container output for troubleshooting.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Configure cloud networking, secrets, and data separately
Replace local service discovery with the cloud database endpoint
The hostname db works when it is the database service name on the same Compose network. In ACI, configure the app with the endpoint of whatever database service the deployment actually uses. The cited ACI guides do not define a Node.js/PostgreSQL production architecture for this project, so they cannot establish whether the database should be another container, a separately hosted database, or something else.
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallBest Value
- The Basic Starter Kit for Raspberry Pi offers detailed learning courses for beginners.
- It provides many components that allow you to create a variety of different projects.
- Compatible with Raspberry Pi 5/4B/3B+/3B/Zero W/Zero /400.
- 4 programming languages Python C Java Scratch.
- We are constantly improving our tutorials to enhance the customer experience.
Protect credentials
Do not publish database or registry credentials in source code, Compose files, deployment templates, or screenshots. Microsoft warns in its ACI quickstart that credentials passed directly through the CLI are stored in plain text in the backend, and recommends using CLI environment variables so values are encrypted or transformed when stored. Verify the current secret-handling behavior for the specific deployment method you use. Environment variables are a safer way to avoid literal credentials in a command, but they do not remove the need to control access to the machine, shell history, pipeline, and deployment configuration where those values are used.
Treat production persistence as a separate design decision
Docker’s local named volume is a development convenience, not a cloud backup strategy. Before using a deployed notes app for valuable data, establish the database’s storage location, persistence guarantees, backup schedule, and restore procedure. The cited ACI material explains container deployment and inspection, but does not document production PostgreSQL persistence or backups for this app.
Check ACI status and diagnose startup failures
- Provisioning is incomplete or failed: use
az container showto inspect the provisioning state and reported FQDN. - The container was created but the app is unavailable: retrieve logs with
az container logs, then check that the app listens on the exposed port and that the configured port matches the deployment. - The app cannot reach PostgreSQL: check the cloud database hostname and credentials. A Compose-only name such as
dbis not automatically resolvable outside its Compose network. - Local data is missing in the cloud: the local named volume is not transferred by deploying the image. Confirm the cloud database and data-migration plan independently.
- Registry authentication fails: confirm the image reference and access configuration, and avoid exposing registry credentials in scripts or templates.
For a deployment involving multiple containers, Microsoft documents ACI container groups created from a Resource Manager template, along with status and log inspection. Its example combines a web container and a sidecar; it does not establish a production Node.js/PostgreSQL arrangement. Protect any credentials used in templates rather than committing them. See Microsoft’s multi-container group documentation.
Quick Recap
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.
Quick wins for a faster PC:
Clear out junk files and repair common Windows errorsFree Scan →Fix the driver behind crashes, sound loss and screen glitchesFind Drivers →




