Dockerfile是否创build一个单一的图像或多个图像?

我的dock-compose.yml文件

db: image: postgres ports: - "5432" web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/myapp ports: - "3030:3030" links: - db 

我的Dockerfile

 FROM ruby:2.1.4 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs RUN mkdir /myapp WORKDIR /myapp ADD Gemfile /myapp/Gemfile RUN bundle install ADD . /myapp # RUN bundle exec rake db:create # RUN bundle exec rake db:migrate # RUN bundle exec rake db:seed 

当我运行docker-compose时,它会创build两个容器,一个使用rails应用程序,另一个使用数据库。 我了解,每个docker文件创build一个最终的docker图像(因此一个容器),但在这种情况下,我们最终创build两个不同的容器。 有人能解释一下吗,这是怎么发生的?

docker-compose根据两个图像pipe理两个容器:

  • postgres容器基于从Docker Hub下载的现有图像 :不需要Docker文件 。 如果您没有在本地,它将被下载,并保存在本地图像存储 。
  • web基于你的Dockerfile(因为build: . :。指令)