Sfi*_*oza 9 php linux apache docker docker-compose
Dockerfile和docker-compose.yml文件之间有什么关系?
貌似我可以构建使用任何Linux安装Dockerfile使用FROM,RUN(apt-get等和CMD命令.但现在看来,这是没有太大的可重复使用的(我可以重用的整体形象,但服务hardcdoded,而不是由其他项目重复使用).
我可以在新项目中使用这两个文件吗?
假设我想要定期LAMP堆栈:
debian:wheezy)httpd:2.2)mariadb)php:5.6)像常规机器一样在一起运行.
在我的主机系统的目录中:
我更喜欢使用官方的,基本的回购和图像,而不是预配置的多功能一体机.
在这种情况下配置文件应该如何?
我在Ubuntu上使用docker-composev.1.8.1和v.1.12.3 docker.
dne*_*hin 12
Dockerfile:
docker-compose.yaml:
Dockerfilebuild:通常将两者结合使用.
A Dockerfile几乎总是用于创建自定义图像.某些映像可能用于运行服务(长时间运行的进程),但某些映像可能用于运行短期交互式进程(如运行单元测试).
docker-compose.yaml 在您想要运行一个或多个服务时非常有用.
Buk*_*gey 10
Docker创建了隔离的机器(容器).每个容器只包含一个进程(Apache或Mysql或其他); Dockerfile定义了如何构建图像.
Docker compose允许运行,链接和配置一堆容器.
在你的情况下,apache需要知道"where"是一个mysql.并且在运行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
Run Code Online (Sandbox Code Playgroud)
然后你需要建立图像 docker build my_app:latest .
此时您已经创建了图像,并且需要运行app并将其链接到db
你有2种方法可以做到这一点:
1)本地码头工人方法.你运行db容器
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
Run Code Online (Sandbox Code Playgroud)
此配置允许您一起运行2个容器,链接和配置它们.
这是一个非常简单的例子.使用docker的优点并不明显,但是如果你有5个以上的容器,那么在没有编写的情况下将它们放在一起就太难了.
从根本上讲,它是关于关注点的分离,而实现这一点的一个简单方法是从“什么”和“如何”的角度进行思考。
Dockerfile 定义了容器内发生的事情。
Docker-compose.yml 定义容器如何在主机中运行。这就是为什么他们在文档中说“服务只是生产中的容器”。
容器不关心它如何运行或在哪里运行,它只关心它正在运行什么。主机不关心它正在运行什么,只关心它是如何运行的。例如多个实例,这么多的 RAM,那么多的 CPU,确保你在那个服务之前启动这个服务,等等。
因此,我们为每个目的创建两个单独的配置文档。
| 归档时间: |
|
| 查看次数: |
2985 次 |
| 最近记录: |