加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

php – Dockerfile vs docker-compose.yml

发布时间:2020-12-16 03:53:45 所属栏目:安全 来源:网络整理
导读:Dockerfile和docker-compose.yml文件之间的关系是什么? 看起来我可以使用FROM,RUN(apt-get等和CMD命令)使用Dockerfile构建任何Linux设置.但似乎,这是不可重用的(我可以重用整个映像,但服务是硬编码的,不能通过其他的项目). 我可以在新项目中使用这两个文件

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-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个容器,那么在没有编写的情况下将它们放在一起就太难了.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读