<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Docker Repository Archives - Nerd Corner</title>
	<atom:link href="https://nerd-corner.com/de/tag/docker-repository/feed/" rel="self" type="application/rss+xml" />
	<link>https://nerd-corner.com/de/tag/docker-repository/</link>
	<description>Craft your dreams!</description>
	<lastBuildDate>Wed, 26 Mar 2025 09:20:51 +0000</lastBuildDate>
	<language>de</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>

<image>
	<url>https://nerd-corner.com/wp-content/uploads/2019/10/cropped-LogoNerdCorner-2-32x32.png</url>
	<title>Docker Repository Archives - Nerd Corner</title>
	<link>https://nerd-corner.com/de/tag/docker-repository/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Docker Images erstellen und auf Docker Hub hochladen</title>
		<link>https://nerd-corner.com/de/docker-images-erstellen-und-auf-docker-hub-hochladen/</link>
					<comments>https://nerd-corner.com/de/docker-images-erstellen-und-auf-docker-hub-hochladen/#respond</comments>
		
		<dc:creator><![CDATA[Nerds]]></dc:creator>
		<pubDate>Wed, 15 Jan 2025 11:44:13 +0000</pubDate>
				<category><![CDATA[Angular-DE]]></category>
		<category><![CDATA[App Entwicklung]]></category>
		<category><![CDATA[Software-DE]]></category>
		<category><![CDATA[angular]]></category>
		<category><![CDATA[Anleitung]]></category>
		<category><![CDATA[Backend]]></category>
		<category><![CDATA[Backend Server]]></category>
		<category><![CDATA[Docker]]></category>
		<category><![CDATA[Docker Hub]]></category>
		<category><![CDATA[Docker Images]]></category>
		<category><![CDATA[Docker Repository]]></category>
		<category><![CDATA[frontend]]></category>
		<category><![CDATA[google cloud mysql]]></category>
		<category><![CDATA[Images]]></category>
		<category><![CDATA[Kubernetes]]></category>
		<category><![CDATA[mySql]]></category>
		<category><![CDATA[Nest]]></category>
		<category><![CDATA[Nest.js]]></category>
		<category><![CDATA[Redis]]></category>
		<category><![CDATA[redis session management]]></category>
		<category><![CDATA[redis session management nest.js]]></category>
		<category><![CDATA[Repository]]></category>
		<category><![CDATA[Schritt für Schritt Anweisung]]></category>
		<guid isPermaLink="false">https://nerd-corner.com/?p=1680</guid>

					<description><![CDATA[<p>In diesem Beitrag zeige ich, wie man production-ready Docker Images für eine Web Anwendung mit Angular, NestJS, MySQL und Redis erstellt und anschließend auf Docker &#8230; </p>
<p>The post <a href="https://nerd-corner.com/de/docker-images-erstellen-und-auf-docker-hub-hochladen/">Docker Images erstellen und auf Docker Hub hochladen</a> appeared first on <a href="https://nerd-corner.com/de">Nerd Corner</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In diesem Beitrag zeige ich, wie man production-ready Docker Images für eine Web Anwendung mit Angular, NestJS, MySQL und Redis erstellt und anschließend auf Docker Hub veröffentlicht. Voraussetzung ist eine installierte Docker Umgebung.</p>
<p><em><strong>Das könnte dich ebenfalls interessieren:</strong> <a href="https://nerd-corner.com/de/erfahrungen-aus-der-praxis-nestjs-auf-vercel-hosten/">NestJS auf Vercel hosten</a></em></p>
<h2>Erstellung der Docker Compose Yml</h2>
<p>Mit Docker Compose können alle Komponenten einer Anwendung über eine einzige Konfigurationsdatei definiert und gemeinsam gebuildet bzw. gestartet werden.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">version: '3.8'

services:
  frontend:
    build: ./frontend
    ports:
      - "80:80"
    depends_on:
      - backend

  backend:
    build: ./backend
    ports:
      - "3000:3000"
    depends_on:
      - mysql
      - redis
    environment:
      - DATABASE_URL=mysql://user:password@mysql:3306/db
      - SESSION_STORE=redis://redis:6379

  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: db
    ports:
      - "3306:3306"

  redis:
    image: redis:latest
    ports:
      - "6379:6379"</pre>
<h2>Erstellung der Env Datei</h2>
<p>Um Umgebungsvariablen zentral zu verwalten, erstellen wir eine <code>.env</code> Datei:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">DATABASE_URL=mysql://user:password@mysql:3306/db 
SESSION_STORE=redis://redis:6379</pre>
<p>Wichtig: Alle ENV-Variablen, die im Code verwendet werden, müssen auch in <code>docker-compose.yml</code> vorkommen!</p>
<h2>Docker-Image für das Frontend</h2>
<p>Das Angular-Frontend muss für die Produktion gebaut werden. Hier ein Beispiel-<code>Dockerfile</code>:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">FROM node:20 AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build --prod

FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html
COPY nginx.conf /etc/nginx/nginx.conf</pre>
<p>Da wir für den Build auf nginx angewiesen sind brauchen wir auch eine entsprechende Config Datei:</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">server {
  listen 80;
  server_name _;

  location / {
    root /usr/share/nginx/html;
    index index.html;
    try_files $uri $uri/ /index.html;
  }
}</pre>
<h2>Docker-Image für das Backend</h2>
<p>Auch das NestJS-Backend muss gebaut werden. Hier ein optimiertes <code>Dockerfile</code></p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic"># Build stage
FROM node:20 AS build
WORKDIR /app
COPY package.json package-lock.json ./
RUN npm install
COPY . .
RUN npm run build

# Production stage
FROM node:20-alpine
WORKDIR /app

COPY --from=build /app/dist ./dist
COPY package.json package-lock.json ./
RUN npm install --only=production
CMD ["node", "dist/main.js"]</pre>
<h2>Builden der App mit Docker Compose</h2>
<p>Nachdem alle Dockerfiles konfiguriert wurden können jetzt die Images gebuildet werden. Mit Docker compose ist das ganze wirklich einfach.</p>
<pre class="EnlighterJSRAW" data-enlighter-language="generic">docker compose up -d --build</pre>
<p>Anschließend sind die Images fertig, die Container gebaut und die App kann lokal direkt ausgetestet werden! Als letzer Schritt müssen die Images noch auf DockerHub hochgeladen werden, damit sie später leichter für das Deployment auf einem Server genutzt werden können.</p>
<h2>Hochladen auf Docker Hub</h2>
<p>Das Hochladen wird nachfolgend Schritt für Schritt erklärt:</p>
<ol>
<li>Erstelle einen Account bei <a href="https://hub.docker.com/">Docker Hub</a>.</li>
<li>Erstelle ein Repository für das Frontend und Backend (1 privates Repo ist aktuell kostenlos).</li>
<li>Baue die Images und tagge sie:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">docker tag &lt;image-id&gt; dockerAccountName/frontend:latest
docker tag &lt;image-id&gt; dockerAccountName/backend:latest</pre>
</li>
<li>Melde dich an und pushe die Images:
<pre class="EnlighterJSRAW" data-enlighter-language="generic">docker login
docker push dockerAccountName/frontend:latest
docker push dockerAccountName/backend:latest</pre>
</li>
</ol>
<h2>Ausblick: Deployment mit Kubernetes</h2>
<p>Da die Images nun auf Docker Hub sind, steht dem Deployment nichts mehr im Wege. Ich habe mich für ein Kubernetes-Cluster auf einem Hetzner-VPS entschieden. <a href="https://nerd-corner.com/de/deployment-einer-webapp-mit-kubernetes-und-caddy/">Mehr Infos dazu hier</a>.</p>
<p>The post <a href="https://nerd-corner.com/de/docker-images-erstellen-und-auf-docker-hub-hochladen/">Docker Images erstellen und auf Docker Hub hochladen</a> appeared first on <a href="https://nerd-corner.com/de">Nerd Corner</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://nerd-corner.com/de/docker-images-erstellen-und-auf-docker-hub-hochladen/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
