Docker
Drone构建Laravel镜像时执行数据库迁移
Drone构建Laravel镜像时执行数据库迁移
最近在部署一个Laravel项目,采用的时Docker部署,Drone自动化打包镜像,关于数据库管理用的是Laravel的migration来进行管理,所以想要在打包镜像的时候,同时执行数据库迁移,下面跟大家介绍我所使用的方法。
一、配置Secrets。
由于线上数据库配置不想在构建文件中暴露,所以我们直接将他配置在Drone项目管理后台的Secrets中,下面贴出我们的配置项
我们这里配置两个数据库,一个是正式环境的数据库,另一个是测试环境的数据库。
二、修改Drone构建配置
我们在构建过程中,直接读取Secrets的数据库配置覆盖项目的.env数据库配置,在后续步骤中执行数据库迁移,配置如下
#填充env配置 - name: fill-env pull: if-not-exists image: alpine environment: DB_HOST: from_secret: db_host DB_MASTERDATABASE: from_secret: db_master_database DB_TEST_DATABASE: from_secret: db_test_database DB_USERNAME: from_secret: db_username DB_PASSWORD: from_secret: db_password commands: - | case ${DRONE_BRANCH} in master) sed -i "s/DB_HOST=.*/DB_HOST=$${DB_HOST}/" .env sed -i "s/DB_DATABASE=.*/DB_DATABASE=$${DB_MASTERDATABASE}/" .env sed -i "s/DB_USERNAME=.*/DB_USERNAME=$${DB_USERNAME}/" .env sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$${DB_PASSWORD}/" .env ;; test) sed -i "s/DB_HOST=.*/DB_HOST=$${DB_HOST}/" .env sed -i "s/DB_DATABASE=.*/DB_DATABASE=$${DB_TEST_DATABASE}/" .env sed -i "s/DB_USERNAME=.*/DB_USERNAME=$${DB_USERNAME}/" .env sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$${DB_PASSWORD}/" .env ;; esac
这里我们做了区分,根据不同项目分支,覆盖不同的数据库配置,从而隔离正式跟测试环境。
三、进行项目构建
我们在覆盖数据库配置后面步骤执行composer以及数据库迁移,配置如下
#安装composer扩展以及执行数据库迁移 - name: backend pull: if-not-exists image: hongzhuangxian/php7.3-diy commands: - composer install --prefer-dist - php artisan migrate --force
我们看看执行效果,上传一个新的迁移文件,构建过程成功执行迁移
以上就是在构建过程中,实现自动执行数据库迁移的配置。
0条评论