我想使多个图像的Dockerfile在一个容器中运行。
什么是去了解这一点的最好方法是什么? 下面是什么,我想在一个容器中运行的列表。 我还没有与制作Dockerfile与所有这些包含任何运气。
- MySQL服务器
- 的RabbitMQ
- Java8
- Node.js的
- XVFB
- 火狐
- 铬
这是我到目前为止,我可以得到一些提示
FROM stackbrew/ubuntu:12.04
MAINTAINER
# Update the repository sources list #RUN apt-get update
# My SQL Server ###############
RUN apt-get
update -qq && apt-get
install -y mysql-server-5.5
ADD my.cnf /etc/mysql/conf.d/my.cnf
RUN chmod 664 /etc/mysql/conf.d/my.cnf
ADD run /usr/local/bin/run
RUN chmod +x /usr/local/bin/run V
OLUME ["/var/lib/mysql"]
EXPOSE 3306
CMD ["/usr/local/bin/run"]
你不能有“多个图像在一个容器中运行”,这是没有意义。
但是,你可以写一个Dockerfile创建将安装所有你mentionned服务的图像。 实施例(Ubuntu的/ Debian的分布):
[...header...]
FROM stackbrew/ubuntu:12.04 #or use ubuntu-upstart:12.04
MAINTAINER BPetkov
# Update the repository sources list
RUN apt-get update -qq
# Mysql
RUN apt-get install -y mysql-server-5.5
ADD my.cnf /etc/mysql/conf.d/my.cnf
RUN chmod 664 /etc/mysql/conf.d/my.cnf
ADD run /usr/local/bin/run
RUN chmod +x /usr/local/bin/run
# Other stuff
RUN apt-get -y install rabbitmq
RUN apt-get -y install nodejs
[...]
VOLUME ["/var/lib/mysql"]
EXPOSE 3306
EXPOSE .......
CMD ["/sbin/init"]
然后,你就一定得容器启动时,所有的人都自动启动。
您可以使用进程管理器,如supervisord (泊坞文档在这里 )。
或者,你可以使用普通的init系统,检查这个基本映像: Ubuntu的暴发户 。 这个人会允许你只需要安装的软件包你Dockerfile,并让他们没有任何努力自动启动,通过指定/ sbin目录/ INIT作为EntryPoint
或CMD
在Dockerfile。