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 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种方法可以做到这一点:
docker run –name some-MysqL -e MysqL_ROOT_PASSWORD = my-secret-pw -d MysqL:latest
并且在您需要运行app容器之后(之前创建了图像)
docker run –name my_app –link some-MysqL:MysqL -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个容器,那么在没有编写的情况下将它们放在一起就太难了.