我有一个关于Docker的问题。这个容器的概念对我来说是全新的,我确信我还没有掌握事情是如何工作的(容器,Dockerfiles,...)以及它们是如何工作的。
假设我想在同一个虚拟机上托管小型网站,这些网站由Apache,PHP-FPM,MySQL和可能的Memcache组成。
这就是我的想法:
1)一个包含Apache,PHP,MySQL和Memcache的镜像2) 包含"我的网站"文件的一张或多张图片
我必须找到一种方法来告诉我的第一个图像,在 apache 中,托管网站的网站文件夹存储在哪里。但是,我不知道第一个容器是否可以读取另一个容器中的文件。
这里有人做过类似的事情吗?
谢谢
容器设置应为:
- MySQL 容器
- 内存缓存容器
- 阿帕奇,PHP等
- 数据容器(可选)
运行 MySQL 并使用 -p 命令公开其端口:
docker run -d --name mysql -p 3306:3306 dockerfile/mysql
运行内存缓存
docker run -d --name memcached -p 11211:11211 borja/docker-memcached
运行 Web 容器并将 Web 文件从主机文件系统装载到容器中。它们将在容器内的/container_fs/web_files/
提供。链接到其他容器,以便能够通过 tcp 与它们通信。
docker run -d --name web -p 80:80
-v /host_fs/web_files:/container_fs/web_files/
--link mysql:mysql
--link memcached:memcached
your/docker-web-container
在您的 Web 容器内查找环境变量MYSQL_PORT_3306_TCP_ADDR
和MYSQL_PORT_3306_TCP_PORT
,告诉您连接到MySQL实例的位置,以及类似的MEMCACHED_PORT_11211_TCP_ADDR
和MEMCACHED_PORT_11211_TCP_PORT
告诉您连接到memcacheed的位置。
使用 Docker 的惯用方法是尝试为每个容器保留一个进程。因此,Apache和MySQL等应该在单独的容器中。
然后,您可以创建一个数据容器来保存您的网站文件,只需使用 --volumes-from
将卷挂载到 Web 服务器容器中即可。有关详细信息,请参阅 https://docs.docker.com/userguide/dockervolumes/,特别是"创建和挂载数据卷容器"。