数据库配置示例

本文档提供了示例数据库config.yml文件使用PostgreSQL/Rails和MySQL/Ruby在下面的部分:

一个Rails应用程序的CircleCI配置示例

如果您正在迁移一个Rails应用程序配置了structure.sql文件,确保psql,因为circleci/ruby:2.4.1节点映像默认没有安装psql,并且使用pg用于数据库访问的gem。

版本:2工作:建立:working_directory:~ / circleci-demo-ruby-rails运行所有命令的主容器映像码头工人:-图像:circleci / ruby: 2.4.1-node身份验证:用户名:mydockerhub-user密码:$ DOCKERHUB_PASSWORD#上下文/项目UI env-var引用环境:RAILS_ENV:测试PGHOST:127.0.0.1PGUSER:#在“host: localhost”上可用的服务容器映像-图像:circleci / postgres: 9.6.2-alpine身份验证:用户名:mydockerhub-user密码:$ DOCKERHUB_PASSWORD#上下文/项目UI env-var引用环境:POSTGRES_USER:POSTGRES_DB:circle-test_test步骤:-结帐#恢复bundle缓存-restore_cache::-Gemfile rails-demo -{{校验和”。锁"}}-rails-demo -# Bundle安装依赖-运行:的名字:安装依赖关系命令:bundle install—path=vendor/bundle—jobs 4—重试3.-运行:应该安装-y postgresql-client ||真正的#存储包缓存-save_cache:关键:Gemfile rails-demo -{{校验和”。锁"}}路径:-供应商/束-运行:的名字:数据库设置命令:|bundle exec rake db:createbundle exec rake db:结构:负载-运行:的名字:平行RSpec命令:bin / rails测试#保存工件-store_test_results:路径:/ tmp /测试结果

注意:另一种方法是通过扩展当前映像、安装所需的包、提交并将其推到Docker Hub或您选择的注册表来构建自己的映像。

例子的环境设置

在CircleCI 2.0中,必须显式声明数据库配置,因为可能会使用多个预构建或自定义映像。例如,Rails将尝试使用以下顺序的数据库URL:

  1. DATABASE_URL环境变量,如果设置
  2. 您的系统中适当环境的测试部分配置config.yml文件(通常是测试)。

下面的示例通过组合环境与所述图像和通过还包括设置环境配置在shell命令启用数据库连接:

版本:2工作:建立:working_directory:~ /浏览器名称码头工人:-图像:ruby: 2.3.1-jessie身份验证:用户名:mydockerhub-user密码:$ DOCKERHUB_PASSWORD#上下文/项目UI env-var引用环境:PG_HOST:本地主机PG_USER:Ubuntu的RAILS_ENV:测试RACK_ENV:测试下面的例子使用官方的postgres 9.6图像,你也可以使用circleci/postgres:9.6其中包括一些增强和修改。可以使用任何一个映像。-图像:postgres: 9.6杰西身份验证:用户名:mydockerhub-user密码:$ DOCKERHUB_PASSWORD#上下文/项目UI env-var引用环境:POSTGRES_USER:Ubuntu的POSTGRES_DB:db_name步骤:-结帐-运行:的名字:安装Ruby的依赖性命令:包安装-运行:的名字:建立数据库命令:|bundle exec rake db:create db:schema:load——tracebundle exec rake db:迁移环境:DATABASE_URL:postgres: / / ubuntu@localhost: 5432 / db_name”

这个例子指定的$ DATABASE_URL作为PostgreSQL 9.6的默认用户和端口。对于9.5版本,默认端口是5433而不是5432。要指定不同的端口,请更改$ DATABASE_URL和所有的调用psql

示例Go应用程序与PostgreSQL

指的是去语言指南查看此示例配置的演练和应用程序的公共代码存储库的链接。

版本:2工作:建立:码头工人:# CircleCI Go图像:https://hub.docker.com/r/circleci/golang/-图像:杰西circleci / golang: 1.8身份验证:用户名:mydockerhub-user密码:$ DOCKERHUB_PASSWORD#上下文/项目UI env-var引用# CircleCI PostgreSQL镜像:https://hub.docker.com/r/circleci/postgres/-图像:高山circleci / postgres: 9.6身份验证:用户名:mydockerhub-user密码:$ DOCKERHUB_PASSWORD#上下文/项目UI env-var引用环境:POSTGRES_USER:circleci-DEMO-GOPOSTGRES_DB:circle_testworking_directory:/ / src / github.com/CircleCI-Public/circleci-demo-go去环境:测试结果:/ tmp /测试结果步骤:-结帐-运行:mkdir - p TEST_RESULTS美元-restore_cache::-V1-PKG-缓存通常,此步骤将在一个自定义主映像中;我们添加它是为了解释。-运行:去github.com/lib/pq-运行:去github.com/mattes/migrate-运行:去github.com/jstemmer/go-junit-report-运行:的名字:等待信件准备好命令:|对于seq1中的i;NC -z本地主机5432次&&回声成功&&退出0echo - n。睡眠1DONEecho等待Postgres &&退出1失败-运行:的名字:运行单元测试环境:CONTACTS_DB_URL:postgres: / / circleci-demo-go@localhost: 5432 / circle_test ? sslmode =禁用”CONTACTS_DB_MIGRATIONS:/ / src / github.com/CircleCI-Public/circleci-demo-go/db/migrations去命令:|陷阱”go-junit-report < $ {TEST_RESULTS} / go-test。出> $ {TEST_RESULTS} / go-test-report。xml“退出使测试| tee ${TEST_RESULTS}/go-test.out-运行:使-save_cache:关键:V1-PKG-缓存路径:-/ /包裹”-运行:的名字:开始服务环境:CONTACTS_DB_URL:postgres: / / circleci-demo-go@localhost: 5432 / circle_test ? sslmode =禁用”CONTACTS_DB_MIGRATIONS:/ / src / github.com/CircleCI-Public/circleci-demo-go/db/migrations去命令:/ workdir /联系人背景:真正的-运行:的名字:验证服务正在工作命令:|睡5curl—retry 10—retry—delay 1—x POST—header“Content-Type: application/json”—d’{“email”:“test@example.com”,“name”:“Test User”}’http://localhost:8080/contacts”-store_artifacts:路径:/ tmp /测试结果目的地:生体检查输出-store_test_results:路径:/ tmp /测试结果

示例MYSQL项目。

下面的示例将MYSQL与PHP容器一起设置为辅助容器。

版本:2工作:建立:码头工人:-图像:-apache-node-browsers circleci / php: 7.1运行步骤的主容器身份验证:用户名:mydockerhub-user密码:$ DOCKERHUB_PASSWORD#上下文/项目UI env-var引用-图像:circleci / MySQL的:8.0.4身份验证:用户名:mydockerhub-user密码:$ DOCKERHUB_PASSWORD#上下文/项目UI env-var引用环境:MYSQL_ROOT_PASSWORD:rootpwMYSQL_DATABASE:test_dbMYSQL_USER:用户MYSQL_PASSWORD:passw0rd步骤:-结帐-运行:我们的主容器不是MYSQL,所以运行一个sleep命令,直到它准备好。的名字:等待MySQL准备就绪命令:|对于seq1中的i;nc -z 127.0.0.1 3306 && echo成功&& exit 0echo - n。睡眠1DONEecho等待MySQL &&退出1失败-运行:的名字:安装MySQL CLI;导入虚拟数据;运行示例查询命令:|sudo apt-get安装default-mysql-clientmysql -h 127.0.0.1 -u用户-ppassw0rd test_db < sql-data/dummy.sqlmysql -h 127.0.0.1 -u user -ppassw0rd -execute="SELECT * FROM test_db.Persons"工作流:版本:2build-deploy:工作:-建立

虽然可以将MySQL作为您的主要和唯一容器,但本示例不这样做。作为一个更实际的用例,该示例使用一个PHP docker映像作为它的主容器,并将等到MySQL启动并运行后再执行任何操作运行涉及数据库的命令。

一旦数据库启动,我们安装mysql客户机到主容器中,使得我们可以运行一个命令以连接并导入虚设数据,推测在发现,sql数据/ dummy.sql在项目的根目录中。在本例中,虚拟数据包含一组示例SQL命令:

下降表格如果存在“人”;创建表格(PersonIDINT,varchar(255),FirstNamevarchar(255),地址varchar(255),城市varchar(255));(1,“Foo”,“记者”,“123酒吧街”,“FooBazBar城”);

另请参阅

指的是配置数据库获取关于使用服务映像和数据库测试步骤的概念信息的演练文档。