如何在dockerized Rails应用程序中创buildMysqltesting数据库?

我设法dockerize在Mysql数据库上运行我现有的Rails应用程序。 但是,我不知道是否有可能build立docker-compose在同一个容器中创buildtesting数据库?

这里是我的docker-compose.yml,它用mysql开发很好

version: '2' volumes: db-data: services: db: image: mysql:5.5 restart: always ports: - "3307:3306" environment: MYSQL_ROOT_PASSWORD: verysecret MYSQL_USER: appdb MYSQL_PASSWORD: secret MYSQL_DATABASE: appdb volumes: - db-data:/var/lib/mysql web: build: . command: bundle exec rails s -p 3000 volumes: - .:/app ports: - "3000:3000" links: - db depends_on: - db 

我可以在环境部分更多地添加一个darabase吗?

您可以为每个使用docker撰写的Mysql容器创build一个数据库。 在你的情况下,我认为你应该为第二个数据库创build第二个数据库容器(与“真正的”数据库隔离,这是一个很好的做法)。 如果你真的想把2个数据库放在同一个容器中,你需要创build一个基于Mysql映像的Dockerfile,然后添加命令行(RUN)来创build第二个数据库。

HTH

是的,你可以,但它不一定是一个容器,而是一个耦合容器的pipe理器。 如果这是好的,我已经添加了一些步骤,可以帮助您configuration您的项目。 如果没有,我已经添加了如何从docker-compose文件运行单个图像

您将需要在项目的源目录中创build一个docker-compose.yml文件。

然后你需要在你的yml文件里面添加这样的内容(这是从Docker的快速入门文档中获取的)修改为显示mysql而不是postgres)

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

他们如何创build一个细节可以在这里find: https : //docs.docker.com/compose/rails/#define-the-project 。

注意事项:

  • web是关于轨道容器的细节。 因此,如果您已经创build了您的导轨图像,您将需要添加一个image属性。
  • 另外, build: . 期待您的Dockerfile与您的项目位于相同的位置。 因此,如果您在其他位置创build此docker-compose.yml,则必须提供path。
  • depends_on允许您的应用程序在运行rails之前构build数据库

一旦你完成了docker-compose.yml文件的创build运行: docker-compose.yml docker-compose build后面跟着: docker-compose up

如果将容器分开,则不是您正在查找的内容:那么您可能需要考虑创build运行这两个应用程序的单个映像。 然后用docker-compose运行。

 version: '3' services: app: image: {your-app-image} build: . volumes: - .:/myapp ports: - "3000:3000" - "3306:3306" 

注意:有些东西可能会有所不同,如何从Dockerfile创build图像。