我正在使用Docker,我有一个需要以下内容的网络应用程序:
要安装第2项和第3项,请执行以下操作:
我可以为PostgreSQL运行命令,如:
docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
对于Mongodb我跑:
docker run --name some-mongo -d mongo
对于Tomcat,我有一个带有Tomcat的Dockerfile并将我的war复制到apps文件夹。我使用Docker构建映像并运行它。
我的问题是,是否有更好的方法通过单独的脚本逐步协调这一点? Docker是否构成了解决方案?
感谢
答案 0 :(得分:8)
Dockerfile是用于构建映像的配方,它是用于启动容器的模板。要使用标准化图像描述由多个容器组成的系统,您将使用docker-compose,而不是新的Dockerfile。您可以使用Dockerfile来自定义预先存在的docker镜像,例如mysql或node或ubuntu,以用于特定用途。
docker-compose
允许您将多个docker命令表示为特定格式的.yml文件。
然后,您可以使用docker-compose up
启动容器集。
您的示例的docker-compose .yml file 可能会开始看起来像这样
some-postgres: environment: POSTGRES_PASSWORD:mysecretpassword image: postgres some-mongo: image: mongo
您可以使用links:
行添加容器之间的链接。这些和其他细节都在文档中。
答案 1 :(得分:2)
基本上,docker-compose只是docker run的yaml文件实现。 由于docker run传递了参数,所以这些完全相同的参数在docker compose中以yaml格式而不是在命令行中规定。 Docker compose也支持多个容器。
Docker compose还有一些其他不错的功能,例如docker-compose logs,这个命令给出了由compose启动的所有容器的日志。