使用命名卷和数据容器与PHP-FPM和Nginx Docker容器共享应用数据

101 阅读1分钟

在这个例子中,我们将使用Docker的"(命名)卷 "选项来保存我们的应用程序文件/数据。与生产环境中的 "绑定(共享)卷 "相比,这个选项提供了更好的安全性。欲了解更多详情,请阅读Docker中的数据管理页面。由于我们没有使用 "bind(shared) volumes"(这通常在开发环境中使用),我们将把应用程序代码复制到我们的 "数据容器 "my_app 。然后PHP-FPM和Nginx容器将使用这个容器来访问应用程序的数据。

注意事项

当你把你的代码部署到生产环境时,你对你的应用程序代码所做的改变将无法使用,除非你给你的卷指定一个不同的名字。例如,如果它以前被命名为app_code_volume_1 ,那么下次应该是类似于app_code_volume_2

结构

├── docker

文件

docker/nginx/app.conf

server {

docker/nginx/Dockerfile

FROM nginx:1.15.8-alpine

docker/nginx/nginx.conf

user nginx;

docker/php/Dockerfile

FROM php:7.2.13-fpm-alpine3.8

docker/php/www.conf

[global]

docker/source/Dockerfile

FROM tianon/true

docker/docker-compose.yml

version: "3.4"

index.php

构建

$ docker images

docker_my_app_1 容器将永远不会运行,所以不要对它感到兴奋!

$ docker ps -a
$ docker inspect app_code_volume
$ sudo ls -l /var/lib/docker/volumes/app_code_volume/_data

测试

$ curl -i 0.0.0.0:4080

如你所知,我们把应用程序的数据复制到我们的数据容器中,但它们仍然可以在PHP-FPM和Nginx容器中访问。请看下面。

$ docker exec -it docker_my_php_1 ls -l