如何使用docker设置小型网站

时间:2014-11-20 13:39:49

标签: apache docker

我对Docker有疑问。这个容器的概念对我来说是全新的,我相信我还没有掌握工作原理(容器,Dockerfiles ......)以及它们如何工作。

让我们说,我想在同一个虚拟机上托管小型网站,包括Apache,PHP-FPM,MySQL和可能的Memcache。

这就是我的想法:

1)一个包含Apache,PHP,MySQL和Memcache的图像 2)包含我的网站文件的一个或多个图像

我必须找到一种方法来告诉我的第一张图片,在apache中,存储托管网站的网站文件夹。但是,我不知道第一个容器是否可以读取另一个容器内的文件。

这里有人做过类似的事吗?

谢谢

2 个答案:

答案 0 :(得分:4)

您的容器设置应为:

  1. MySQL容器
  2. Memcached Container
  3. Apache,PHP等
  4. Data Conatainer(可选)
  5. 运行MySQL并使用-p命令公开其端口:

    docker run -d --name mysql -p 3306:3306 dockerfile/mysql
    

    运行Memcached

    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
    

    在您的网络容器内 查找环境变量MYSQL_PORT_3306_TCP_ADDRMYSQL_PORT_3306_TCP_PORT以告诉您在何处连接到mysql实例,同样地MEMCACHED_PORT_11211_TCP_ADDRMEMCACHED_PORT_11211_TCP_PORT告诉您连接到memcacheed的位置。

答案 1 :(得分:1)

使用Docker的惯用方法是尝试每个容器保持一个进程。因此,Apache和MySQL等应该在不同的容器中。

然后,您可以创建一个数据容器来保存您的网站文件,并使用--volumes-from简单地将卷装入Webserver容器中。有关更多信息,请参阅https://docs.docker.com/userguide/dockervolumes/,特别是“创建和装载数据卷容器”。