如何自动化多服务Web应用程序的Docker开发环境启动(在Linux上)

我现在必须执行以下9个步骤才能在Ubuntu 16.04上使用Docker启动我的开发堆栈,然后才能开始编写代码:

  • 打开一个terminal,并进入服务#1的源代码目录
  • docker – 编写服务#1(Python / Django,Redis和Postgres容器)
  • docker exec service1 bash; 启动Django dev服务器进行debugging
  • 重复服务#2,使用terminal标签保持组织
  • 打开一个terminal,并进入前端Angular应用程序源目录
  • 用npm运行一个webpack dev服务器
  • 打开一个或多个terminal,并cd到相应的源代码目录进行编辑

我尝试编写一个shell脚本,用gnome-terminal --tab -e "bash -c docker-compose up"等方式启动所有的东西,但是这样会变得笨拙,在尝试shell到容器中运行时会失败,例如gnome-terminal --tab -e "bash -c \"docker-compose exec service1 bash -c rundev.sh \"" 。 我也尝试过使用xdotool ,但是由于某种原因它无法识别xdotool shellterminal标签。

在两个后端服务上运行一个SPA,并在三个代码库上进行本地开发,对于Docker应用程序开发来说,这似乎不是一个奇怪的用例。

有没有人有任何build议的工具或替代开发环境设置简化的东西?

你可以用bash脚本来完成,但是正确的方法是使用docker-compose。 您需要创建2个与他们各自的命令运行的服务。 这里是一个Rails应用程序的例子 。 你的docker-compose.yml应该和这个类似。

 version: '2' services: db: image: postgres web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/myapp ports: - "3000:3000" depends_on: - db