Zum Hauptinhalt springen
Echtzeit-Radar & Feeds
Alle RSS Feeds ➔
👥 Community & Social
Windows Tipps & SecurityGrafikkarte vor Überhitzung schützen: So geht’s(25.09.2026 um 08:00 Uhr)
••••••••••
Windows Tipps & SecurityGrafikkarte vor Überhitzung schützen: So geht’s(25.09.2026 um 08:00 Uhr)
••••••••••
Intelligence View
⚡ tsecurity.de Intelligence

An Introduction to Docker: Stop asking your stakeholders to install Postgres! 🚀

I once asked a major stakeholder to install Postgres on his laptop just to see my progress. It was September 2024. I was earlier in my career, and the shame of that moment still fuels my obsession with Docker and DX today. The project…

0
↗ Quelle (dev.to)
Reagiere als Erste:r — dein Feedback zählt!

I once asked a major stakeholder to install Postgres on his laptop just to see my progress.



It was September 2024. I was earlier in my career, and the shame of that moment still fuels my obsession with Docker and DX today.



The project was in its early stages. When the stakeholder asked to try it himself, I gave him a to-do list:




  • Install Node.js and PNPM.


  • Set up a local Postgres instance.


  • Switch to a Linux environment.


  • Manually configure credentials and run migrations.




I didn't share a project, I shared a liability. Today, I don't ship code; I ship environments.



That experience was my wake-up call. I realized that as a developer, my job isn't just to write code, but delivering value. If a stakeholder or a new teammate can't run the project in minutes, I've failed.



I'll help you save time and be more effective with one of my favorite development tools ever created: Docker.









Why using Docker? Is not that a DevOps thing?



Yes. Docker is used for DevOps. But almost no one tells you it's used for professional development environments. Would you prefer to install Docker Desktop and run a few commands to start building or:




  • Manually set up Postgres in your machine


  • Set up WSL


  • Ensure each service is running


  • Set up each service individually


  • Ensure the versions match


  • Etc




This process took my company's onboarding time from 5 days to a couple of hours.









Getting Started with Docker






1. Install Docker Desktop



The industry standard for Mac and Windows. If you’re on Linux, you already know the drill.



Docker Desktop for Windows






2. Verify Installation



Open your terminal and check the installed version





docker --version










3. Your First Container



Run this to see Docker pull an image and spin it up in seconds:





docker run hello-world










About Docker



Docker lets you package your app with everything it needs to run; from code to runtime, and libraries into a single unit called Container; which can run in any OS and machine.



It's like a bassline. You don't notice it's important until it's gone.









Docker vs Virtual Machines (VMs)



VMs are heavy, they require a full copy of the operating system and consume significant RAM and CPU.



On the other hand, Containers share your machine's OS kernel and they only install the libraries and dependencies they need.









The Three Pieces of Docker




  1. Dockerfile: This is your blueprint. It allows you to specify Docker how you want to build the environment (OS, the Node.js version, and your dependencies)


  2. Image: The snapshot. It's what you get when you build the blueprint given by the dockerfile. It's a read-only template that contains your application and its environment.


  3. Container: This is the image in action. You can start, stop and delete environments without affecting your actual computer.










Solving the "Postgres Headache" with Docker Compose



Remember the list I gave that stakeholder? "Install Postgres, run migrations, set credentials..."



With Docker Compose, we turn that entire manual process into a single command: docker compose up.



Think of each service (application, database, message queue) as an instrument. You're combining them to create a band, but in YAML.



Docker Compose Diagram



It's important to mention this tool is used for development environments and small MVPs in production. You'll need load balancers and eventually K8s for scaling a complex system.






Time to Build



Suppose we want to dockerize a Next.js app and run a database with it, we're going to create 3 files in the root folder of the project.




  • docker-compose.yaml


  • .dockerignore


  • dockerfile










Dockerfile



This is how Docker will build the image to run our Next.js application.





FROM node:20-alpine

RUN npm install -g pnpm

WORKDIR /app

COPY package.json pnpm-lock.yaml* ./

RUN pnpm install

COPY . .

EXPOSE 3000

CMD ["pnpm", "dev"]













Dockerignore



Just as we have our .gitignore we also have .dockerignore. This file is responsible for preventing packaging sensitive or unnecessary content from the Next.js app into the container.




node_modules
.pnpm-debug.log

.next
out
build

.env
.env.local
.env*.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
.pnpm-debug.log*

.git
.gitignore

.DS_Store
Thumbs.db












Docker Compose File



This file is responsible for orchestrating the containers. You declare each component of your application as a service. Remember to create a Dockerfile for the core Next.js app. The data of postgres will persist on the volume we have created.





services:
db:
image: postgres:15-alpine
container_name: nextjs-db
restart: always
environment:
POSTGRES_USER: admin
POSTGRES_PASSWORD: supersecretpassword
POSTGRES_DB: db
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
app:
build: .
container_name: nextjs-app
ports:
- "3000:3000"
environment:
DATABASE_URL: postgresql://admin:supersecretpassword@db:5432/db
volumes:
- .:/app
- /app/node_modules
depends_on:
- db
command: pnpm dev
volumes:
postgres_data:










Notice I use node:20-alpine. It uses Alpine Linux under the hood; you can choose other Node.js images depending on your needs. Remember that in production environments, we optimize for image size and security surface. We also use depends_on because your app shouldn't start if the database isn't alive.



We're saving the database data in a named volume called postgres_data. This way, when we turn off the container, the data will still persist.



Tip: For resilience, combine depends_on with a healthcheck to ensure the DB is actually ready to receive traffic, not just "running".









One Command to Rule them All



With these three files in your root directory, you’ve turned a 1-hour headache setup into a 10-second command:




docker compose up






By running this, Docker will build your Next.js app, pull the database image, set up the network between them, and start your dev server with hot-reload enabled.



You can even add startup and seeding scripts if needed.









Stop Selling Hours, Start Delivering Systems



I used to think Docker was only a complex DevOps tool until that afternoon in 2024. Where I learned that seniority isn't just about writing fancy code, but about using code as a tool for the business.



I stopped being just a programmer and became a Software Engineer. I reclaimed my time, improved my team's DX, and made sure that no stakeholder ever has to install a database on their laptop again.



If you want to scale your project or your career, start containerizing today. Your future self and your team will thank you.



What was your worst setup story? Share below in the comments!









Building a complex application or a high-performance system?



I help startups engineer scalable applications and internal tools that stay fast as they grow. See how I build scalable systems here: 👉 www.itsfranciscoluna.com

1. Sofort-Triage & Abwehrmaßnahmen

SOC Incident Playbook: Vulnerability Remediation & Verification
Syntax validiert (0 Fehler)
title: Detect Exploitation - An Introduction to Docker: Stop asking your stakeholders to install Postgres! 🚀
id: 280f53ee-dd65-4459-9634-e824357f2281
status: experimental
description: Automatisch generierte SIEM-Erkennungsregel basierend auf CTI Intelligence
references:
  - https://tsecurity.de/
author: iShareStuff CTI Automated Detection Engine
date: 2026-09-27
logsource:
  category: network_connection
  product: any
detection:
  selection:
      CommandLine|contains:
        - 'exploit'
  condition: selection
falsepositives:
  - Legitime administrative Zugriffe oder Penetrationstests
level: high
tags:
  - attack.initial_access
Syntax validiert (0 Fehler)
rule CTI_Threat_Indicator {
    meta:
        author = "iShareStuff CTI Automated Detection Engine"
        date = "2026-09-27"
        description = "YARA Signature for "
    strings:
        $str = "An Introduction to Docker: Sto" ascii wide
    condition:
        any of them
}
Syntax validiert (0 Fehler)
index=security sourcetype IN ("cisco:asa", "pan:traffic", "zeek_conn", "suricata", "WinEventLog:Security")
("An Introduction to Docker Stop asking yo")
| stats count earliest(_time) as first_seen latest(_time) as last_seen by src_ip, dest_ip, dest_host, signature
| eval first_seen=strftime(first_seen, "%Y-%m-%d %H:%M:%S"), last_seen=strftime(last_seen, "%Y-%m-%d %H:%M:%S")
| sort - count
Syntax validiert (0 Fehler)
message: "*An Introduction to Docker Stop asking yo*"
Syntax validiert (0 Fehler)
CommonSecurityLog
| where Message has "An Introduction to Docker Stop asking yo"
| summarize EventCount = count(), FirstSeen = min(TimeGenerated), LastSeen = max(TimeGenerated) by SourceIP, DestinationIP, DestinationPort, Activity
| extend DetectionRule = "iShareStuff-CTI-Compiled"
| sort by EventCount desc

2. Cyber Threat Intelligence & Forensik

CTI Threat Relationship Graph3 Knoten / 2 Relationen
CVE / Incident Software MITRE ATT&CK CWE Weakness IoC
🎯
MITRE ATT&CK Matrix Navigator 14 Taktiken
Reconnaissance
-
Resource Development
-
Initial Access
Execution
Persistence
-
Privilege Escalation
Defense Evasion
Credential Access
-
Discovery
-
Lateral Movement
-
Collection
-
Command and Control
Exfiltration
-
Impact
tsecurity.de Cognitive Threat RAG
Fokus-Vektor:

Analyse für identifizierte Bedrohung auf Basis von Live-CTI (ENISA EUVD): CVSS 0.0 · EPSS 0.0% · CISA KEV: nein. Handlungsableitung aus den verlinkten Hersteller-Quellen.

🛡️ Angriffsfläche & Exposure

Netzwerk/Remote-Zugriff ohne Vorauthentifizierung möglich.

⚡ Empfohlene Sofortmaßnahmen
  • 1. Perimeter-Inspektion: Relevante Portfreigaben und exponierte Endpunkte unverzüglich scannen.
  • 2. Patch-Applikation: Hersteller-Hotfix einspielen oder betroffene Daemons in isolierte DMZ-Segmente überführen.
  • 3. Telemetrie & EDR-Alerts: Prozessaufrufe und Child-Processes auf anomale Shell-Spawns überwachen.
Ähnliche Beiträge
🔍 Verwandte News

Auch interessante Nachrichten An Introduction to Docker: Stop asking your stakeholders to install Postgres! 🚀

Thematisch verwandte Begriffe: Introduction, Docker, Stop, asking · 6 Treffer

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

Laden...

Beiträge werden geladen ...

Laden...

Videos werden geladen ...

💬 Kommentare werden geladen…
Zum Aktualisieren ziehen
ZERO-DAY CVE-2026-100739 | A vulnerability was detected in mathurvishal CloudClassroom-PHP-Project…
Advisory →
tsecurity.de Icon
Offline-Lesen, Eilmeldungen & 0ms Ladezeit

Installiere tsecurity.de direkt auf deinen Home-Bildschirm für das ultimative Vollbild-Magazinerlebnis ohne Browser-Leisten.

Nächster Beitrag