Docker及Laravel为以後每个专案都会用到的搭配,所以这种时候就将它做成一个类似模板的环境并将他上传到Github,如果以後有新专案要做的话直接clone下来就可以了,记得使用composer install、新增.env档,利用指令启动。
docker-compose up -d
Docker启动後的资料夹分布会长这样
.
├── backend
│ ├── laravel
│ │ ├── README.md
│ │ ├── app
│ │ ├── artisan
│ │ ├── bootstrap
│ │ ├── composer.json
│ │ ├── composer.lock
│ │ ├── config
│ │ ├── database
│ │ ├── package.json
│ │ ├── phpunit.xml
│ │ ├── public
│ │ ├── resources
│ │ ├── routes
│ │ ├── server.php
│ │ ├── storage
│ │ ├── tests
│ │ ├── vendor
│ │ └── webpack.mix.js
│ ├── nginx
│ │ └── default.conf
│ └── postgresql
│ ├── PG_VERSION
│ ├── base
│ ├── global
│ ├── pg_commit_ts
│ ├── pg_dynshmem
│ ├── pg_hba.conf
│ ├── pg_ident.conf
│ ├── pg_logical
│ ├── pg_multixact
│ ├── pg_notify
│ ├── pg_replslot
│ ├── pg_serial
│ ├── pg_snapshots
│ ├── pg_stat
│ ├── pg_stat_tmp
│ ├── pg_subtrans
│ ├── pg_tblspc
│ ├── pg_twophase
│ ├── pg_wal
│ ├── pg_xact
│ ├── postgresql.auto.conf
│ ├── postgresql.conf
│ ├── postmaster.opts
│ └── postmaster.pid
└── docker-compose.yaml
nginx的default.conf内容有变更要注意,root会指向laravel的public资料夹
server {
listen 80;
index index.php index.html;
server_name localhost;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/laravel/public;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
docker-compose里的nginx与php挂载资料夹也要注意有变更
version: '3'
networks:
laravel:
services:
nginx:
image: nginx:stable-alpine
container_name: nginx
ports:
- "8080:80"
volumes:
- ./backend/laravel:/var/www/laravel
- ./backend/nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
- postgresql
networks:
- laravel
php:
image: kurt6783/iron_man
container_name: php
working_dir: /var/www/laravel
ports:
- "9000:9000"
volumes:
- ./backend/laravel:/var/www/laravel
networks:
- laravel
postgresql:
image: mdillon/postgis:10
container_name: postgresql
tty: true
ports:
- "5432:5432"
environment:
- POSTGRES_PASSWORD=1234
volumes:
- ./backend/postgresql:/var/lib/postgresql/data
networks:
- laravel
这样完整的专案环境就算建置好了,总算要进入今天的正题,Laravel - migration。
先移动至laravel资料夹,之後的操作几乎都是在这层操作
cd backend/laravel
可以看到有database/migrations这个资料夹,里面会有四个已经建立好的档案,接着试试看下指令
php artisan migrate
接着就会看到系统以迅雷不及掩耳的速度把table都建立好了,可以用Navicate来检查一下
可以看到每个migration里面都有up&down,up内的事情会在migrate时执行,down内的事情会在rollback时执行
php artisan migrate:rollback
migration是一层一层叠上去的,叠的顺序可以migrations这个table里面的batch来得知,当使用rollback指令时会将最上方的一层资料移除掉,如果想要将全部的table都移除,可以使用reset
php artisan migrate:reset
但是要特别注意,使用rollback或是reset时,table里的资料会被移除而且无法救回,这两个指令要小心使用。
还有一个比较特别的指令:seed,先打开database/seeders/DatabaseSeeder.php这个档案,会看到有一行code被注解掉了,将此注解打开
\App\Models\User::factory(10)->create();
如果在使用migrate时搭配指令就会依照需求创建基本资料
php artisan migrate --seed
创建资料的格式会在database/factories,与其model对应的factory里被定义。
Migration的操作差不多就这几项,谢谢观看的各位,请记得按赞分享开启小铃铛,你的支持会让按赞数+1。
<<: 【没钱买ps,PyQt自己写】Day 1 - 安装 PyQt,建立自己的第一支 PyQt5 程序
看完上一篇的输入,今天来介绍不一样表单元件 Input text Textarea多行文字 Chec...
Day 5 进到了网站中最常见需要做功能性的环节 Button <Button variant...
家里有很多以前买的DVD电影 居住环境比较潮湿,光碟的表面竟然有一些发霉。 於是开始着手测试了一些拷...
早安呦~ 成旅的老顾客,许多都是退休人士,其中不乏金字塔顶尖的消费族群。依他们的经济能力,是可以选择...
大家好,我是西瓜,你现在看到的是 2021 iThome 铁人赛『如何在网页中绘制 3D 场景?从 ...