首頁>技術>

第2節,一條命令,啟動Codeigniter並連線上資料庫

先把命令貼在這兒,在此之前需要進行一些配置,那就是本文剩下的所有內容了。

docker-compose up

Compose是Docker官方編排工具,我們可以用它來達成上一篇文章裡面講到的容器的依賴順序。當前一個容器啟動完畢之後再啟動下一個容器。

本文參考了它的官方文件說明:

https://docs.docker.com/compose/
使用的映象:

php映象:

mysql映象:

mysql:5.7
compose檔案:

docker-compose.yml:

version: "3"services:  web_ci:    image: virhuiai/teaching_gf_web_develop:version-0.0.3    ports:      - "80:80"    volumes:      - /Users/virhuiaivirhuiai/Documents/virhuiai-github/teaching_gf_web_develop/framework-4.0.4:/virhuiai/framework-4.0.4/    depends_on:      - "mysql_db"  mysql_db:    image: mysql:5.7    environment:      - MYSQL_ROOT_PASSWORD=Passw0rd!      - MYSQL_DATABASE=ci4_database_name

要注意的一點是,在yaml格式裡面空格,別少了多了。

這邊配置兩個容器,第1個容器:

web_ci:    image:virhuiai/teaching_gf_web_develop:version-0.0.3

這裡指定了我們上一節生成的映象。也可以使用當前目錄下的Dockerfile編譯出來而成,那麼把這兩行改成這樣:

web_ci:    build: .

接著是埠對映:

ports:      - "80:80"

這個就和命令列中的--publish 80:80 或者它的簡寫形式-p 80:80 等同。再接下來是宿主機和容器的目錄對映:

volumes:  - /Users/virhuiaivirhuiai/Documents/virhuiai-github/teaching_gf_web_develop/framework-4.0.4:/virhuiai/framework-4.0.4/

這也對應著命令列中的-v命令引數。

然後就是很喜歡的依賴配置:

depends_on:  - "mysql_db"

這會在下一個容器mysql_db啟動完成之後再啟動web_ci,這和書寫的順序無關。

然後是環境變數:

environment: - MYSQL_ROOT_PASSWORD=Passw0rd! - MYSQL_DATABASE=ci4_database_name

對應著命令列中的-e引數,配置了這個容器的資料庫root使用者的密碼,。

執行:

配置做好後啟動它。

docker-compose up

哦,忘記了Docker沒執行起來,執行後再跑一遍。

啟動起來之後可以到Docker的面板看下:

docker-compose命令說明

up嘗試自動完成一系列操作:包括構建映象,(重新)建立服務,啟動服務,並關聯服務相關容器等

start啟動巳經存在的服務容器

比如:

docker-compose stop
資料庫配置:

之前資料庫連結的配置已經在上篇寫過了,這邊再貼一份,app/Config/Database.php:

    public $default = [        'DSN'      => '',        'hostname' => 'mysql_db',        'username' => 'root',        'password' => 'Passw0rd!',        'database' => 'ci4_database_name',        'DBDriver' => 'MySQLi',        'DBPrefix' => '',        'pConnect' => false,        'DBDebug'  => (ENVIRONMENT !== 'production'),        'cacheOn'  => false,        'cacheDir' => '',        'charset'  => 'utf8',        'DBCollat' => 'utf8_general_ci',        'swapPre'  => '',        'encrypt'  => false,        'compress' => false,        'strictOn' => false,        'failover' => [],        'port'     => 3306,    ];

根據ci官網的教程中的一篇,我們先來建個表備用。

https://codeigniter.org.cn/user_guide/tutorial/news_section.html
# mysql -uroot -Dci4_database_name -p
select database();

可以看到現在當前資料庫已經是我們在Codeigniter中配置的資料庫了,現在我們給它插入一張表:

CREATE TABLE news (                      id int(11) NOT NULL AUTO_INCREMENT,                      title varchar(128) NOT NULL,                      slug varchar(128) NOT NULL,                      body text NOT NULL,                      PRIMARY KEY (id),                      KEY slug (slug));INSERT INTO news VALUES(1,'Elvis sighted','elvis-sighted','Elvis was sighted at the Podunk internet cafe. It looked like he was writing a CodeIgniter app.'),(2,'Say it isn\'t so!','say-it-isnt-so','Scientists conclude that some programmers have a sense of humor.'),(3,'Caffeination, Yes!','caffeination-yes','World\'s largest coffee shop open onsite nested coffee shop for staff only.');

現在在在瀏覽器裡面輸入127.0.0.1就不再是上一節中的報錯資訊了。

第一個例子:

預設頁面是在/framework-4.0.4/app/Controllers/Home.php這個檔案裡面的HomeController的這個index()方法。

我們也不做輸出出一個簡單的helloworld,改為直接測試一下資料庫是否可以連線,對\App\Controllers\Home裡的index方法修改:

<?php namespace App\Controllers;use Config\Database;class Home extends BaseController{    public function index()    {//         return view('welcome_message');        $db = Database::connect();        $tables = $db->listTables();        foreach ($tables as $table)        {            echo $table;        }    }    //--------------------------------------------------------------------}

這時候我們再開啟瀏覽器,可以看到此時已經輸出了所有的表名:

好了,這一節已經連線上資料庫了,下節待續。

關於這篇文章的所有內容,後面也會提到GitHub上。

https://github.com/virhuiai/teaching_gf_web_develop

7
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 使用mybatis-plus多租戶外掛採坑實錄