Nicht in einem Docker-Container, sondern in n Docker-Containern.
Während Sie theoretisch Ihre gesamte Entwicklungsumgebung in einem einzigen Container zusammenstellen konnten, war Docker nicht dazu gedacht.
Stattdessen sollten Sie jeden Dienst in separaten Containern bereitstellen, Docker Compose verwenden und Ihre gesamte Infrastruktur in einer einzigen Datei verwalten, wobei jeder Dienst über eine eigene Protokolldatei, einen eigenen Benutzerbereich, ein eigenes Netzwerk usw. verfügt.
Lassen Sie mich ein Beispiel geben, dies ist ein Entwurf von mir docker-compose.yml
version: '2'
services:
myproxy:
build: myproxy
container_name: ppproxy
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
networks:
default:
aliases:
- www.domain1.it
- www.domain2.it
- www.domain4.it
mydb1:
build: mydb
environment:
DB_USER: sdffdssdf
DB_PASSWORD: fdsfsdsdf
DB_NAME: dbanme1
DB_ENCODING: UTF-8
VIRTUAL_HOST: myhost1.net.lan
VIRTUAL_PORT: 5432
mydb2:
build: mydb
environment:
DB_USER: ssdfsdfs
DB_PASSWORD: sffdssd
DB_NAME: dbanme2
DB_ENCODING: UTF-8
VIRTUAL_HOST: myhost2.net.lan
VIRTUAL_PORT: 5432
www:
image: myimages/oldservice:v1.1
container_name: www
command: /bin/bash /root/launch
environment:
VIRTUAL_HOST: www.domain1.it
VIRTUAL_PORT: 80
ports:
- 80
depends_on:
- mydb1
- mydb1
- myws
myws:
build: myjettycontainer
environment:
HTTPS_METHOD: noredirect
VIRTUAL_HOST: www.domain2.it
VIRTUAL_PORT: 8080
ports:
- 8080
depends_on:
- mydb1
- mydb2
- myproxy
- mypostfix
mypostfix:
image: catatnight/postfix
container_name: mailer
environment:
maildomain: domain1.it
smtp_user: mymail:sfsfdfds
ports:
- 25
Es gibt einen Nginx-Proxy (myproxy), zwei ähnliche Postgres-Datenbanken (mydb1 und 2), einen alten Java-Webanwendungsserver (www), einen Java-Jetty-Container, der einen Rest-Webdienst bereitstellt, und schließlich einen sehr einfachen SMTP-Postfix-Container.
Alles startet - normalerweise :) - docker-compose up
entweder auf meiner Entwicklungsmaschine oder in der Produktion; Protokolldateien werden zu einer einfach zu lesenden Datei zusammengefasst, und es ist möglich, fast alle Funktionen lokal zu replizieren, mit der Garantie, dass sie funktionieren, wenn sie auf meinem Laptop funktionieren.