生产和开发docker使用的区别
我想为我的网站试用docker。我使用生产和开发docker使用的区别,docker,Docker,我想为我的网站试用docker。我使用php、nginx、mysql。我已经配置了docker,并在本地运行了我的网站。现在我想将我的网站发布到生产环境中。 开发人员版本和生产版本之间没有什么区别: 我需要能够在开发者模式下连接到容器内部的mysql(用于调试),但在生产模式下,为了安全起见,mysql必须与外部隔离 我想通过地址app.dev打开我的网站,并在我的开发人员机器上使用nginx代理映像,但在生产中,我不会使用nginx代理来提高性能 我可以用一个docker-compose.
php、nginx、mysql
。我已经配置了docker,并在本地运行了我的网站。现在我想将我的网站发布到生产环境中。
开发人员版本和生产版本之间没有什么区别:
- 我需要能够在开发者模式下连接到容器内部的mysql(用于调试),但在生产模式下,为了安全起见,mysql必须与外部隔离
- 我想通过地址app.dev打开我的网站,并在我的开发人员机器上使用nginx代理映像,但在生产中,我不会使用nginx代理来提高性能
version: '2'
services:
app:
build: .
volumes:
- ./app:/app
container_name: app
app_nginx:
image: nginx
ports:
- "8080:80"
container_name: app_nginx
volumes:
- ./data/nginx:/etc/nginx/conf.d
- ./app:/app
environment:
- VIRTUAL_HOST=app.dev
app_db:
image: mysql:5.7
volumes:
- "./data/db:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD:
MYSQL_ALLOW_EMPTY_PASSWORD: 1
MYSQL_DATABASE: "app_db"
container_name: app_db
nginx-proxy:
image: jwilder/nginx-proxy
container_name: nginx-proxy
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
您可以通过基于环境变量的配置来实现这一点。 通常,不同的环境(即暂存和生产环境)只因其需要连接到的数据库、调用的外部服务、它们的端点和凭据等配置而不同 不要硬编码所有这些配置,而是从环境变量中读取它们。因此,您可以将同一docker compose文件与不同的环境变量一起用于暂存和生产环境
您还可以在的Rancher by Rancher Labs上探索Rancher以管理您的环境。但在这种情况下,我应该发送容器,然后配置环境变量。据我所知,docker的主要思想是在没有任何配置的情况下发货和运行。或者如果env变量不存在,我可以设置默认值吗?Docker图像将保持不变。您的应用程序需要基于环境变量的配置。如果未传递任何环境变量,您还可以在应用程序中处理以使用生产配置作为默认值。但这是不安全的,因为您将与团队中的每个人共享您的生产凭证。Docker compose用于管理应用程序堆栈,在主应用程序启动之前启动所有依赖项。对不起,我不明白。例如,只有当ENV_DEV存在且等于TRUE时,我才需要映射mysql端口3306:3306。我该怎么办?基于docker hub的mysql:5.7映像创建我自己的mysql:5.7映像。而不是在mymysql映像的dockerfile check变量和expose port中,如果该变量为true,对吗?公开容器端口是启动它的一部分。您不能使用环境属性做出这样的决定。您正在尝试将容器的端口3306映射到主机服务器。是的,我希望将端口3306从容器映射到主机。但我只想在开发机器上(开发模式)这样做。我不想在生产模式下映射任何mysql端口。我怎样才能做到这一点?对不起,我有很多问题要问。