我的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时,它会创建两个容器,一个包含rails app,另一个包含数据库。我理解每个docker文件创建一个最终的docker镜像(因此创建一个容器),但在这种情况下,我们最终创建了两个不同的容器。有人可以解释一下,这是怎么回事?
答案 0 :(得分:2)
docker-compose
根据两张图片管理两个容器:
postgres
容器基于existing image downloaded from Docker Hub:该端口不需要Dockerfile。如果您没有在本地使用,则会下载并保留in your local image storage。 web
基于您的Dockerfile(因为build: .
指令)