不是在一个docker容器中,而是在n个docker容器中。
从理论上讲,虽然您可以在一个容器中组装整个开发环境,但docker并不是要这样做。
相反,您应该使用docker compose将每个服务部署到单独的容器中,在一个文件中管理整个基础架构,其中每个服务将具有自己的日志文件,用户空间,网络等。
让我举一个例子,这是我的草稿 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
有一个nginx代理(myproxy),两个类似的postgres数据库(mydb1和2),一个旧的Java Web应用程序服务器(www),一个提供其余Web服务的Java Jetty容器,最后是一个非常简单的SMTP postfix容器。
一切都会开始-通常是:)-通过docker-compose up
,在我的开发机器上或在生产中进行;日志文件被汇总到一个易于阅读的文件中,并且可以在本地复制几乎所有功能,并保证如果在笔记本电脑上可以正常运行。