php – Dockerfile vs docker-compose.yml

前端之家收集整理的这篇文章主要介绍了php – Dockerfile vs docker-compose.yml前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Dockerfile和docker-compose.yml文件之间的关系是什么?

看起来我可以使用FROM,RUN(apt-get等和CMD命令)使用Dockerfile构建任何Linux设置.但似乎,这是不可重用的(我可以重用整个映像,但服务是硬编码的,不能通过其他的项目).

我可以在新项目中使用这两个文件吗?

假设我想要定期LAMP堆栈:

> Linux OS(debian:wheezy)
> Apache Web服务器(httpd:2.2)
> MySQL(mariadb)
> PHP(PHP:5.6)

像普通机器一样在一起运行.

在我的主机系统的目录中:

>应用源文件的卷
> vhost配置文件
> apache日志
> db中的持久数据

我更喜欢使用官方的,基本的回购和图像,而不是预配置的多功能一体机.

在这种情况下配置文件应该如何?

我在Ubuntu上使用docker-compose v.1.8.1和docker v.1.12.3.

最佳答案
Docker创建了隔离的机器(容器).每个容器只包含一个进程(Apache或MysqL或其他); Dockerfile定义了如何构建图像.

Docker compose允许运行,链接和配置一堆容器.

在你的情况下,apache需要知道一个MysqL“where”.在运行apache容器之前需要唤醒MysqL.

Dockerfile定义了如何创建应用程序映像.应用程序映像包含应用程序和Web浏览器.

FROM apache:PHP5.6

ADD /src /var/www/awesome_project #add a project src code
ADD /config/apache/awesome_project.conf /etc/apache2/sites-available/ # add a configuration
# make any things

然后你需要构建图像docker build my_app:latest.

此时您已经创建了图像,并且需要运行app并将其链接到db

你有2种方法可以做到这一点:

1)原生码头工人方法.你运行数据库容器

docker run –name some-MysqL -e MysqL_ROOT_PASSWORD = my-secret-pw -d MysqL:latest

并且在您需要运行app容器之后(之前创建了图像)

docker run –name my_app –link some-MysqLMysqL -P -d my_app

在这一点上,我们已经工作申请.这个简单的事情让我们做出2长命令.如果需要将应用程序复制到另一台计算机,则需要完全重复此命令.

2)docker-compose方式允许创建用于运行容器的配置.它描述了如何精确运行容器.

简单的docker-compose.yml配置说明了这种方法

db:
   image: MysqL
   environment:
    - MysqL_USER=root
    - MysqL_PASSWORD=root

app:
   image: my_app:latest
   ports:
    - 80:80
   depends_on:
    - db
   environment:
    # Database
    - DB_USER_NAME=root
    - DB_USER_PASSWORD=root

此配置允许您一起运行2个容器,链接和配置它们.

这是一个非常简单的例子.使用docker的优点并不明显,但如果你有5个容器,那么在没有编写的情况下将它们放在一起就太难了.

原文链接:https://www.f2er.com/docker/437034.html

猜你在找的Docker相关文章