嘗試docker開(kāi)發(fā)(win10)

Ⅰ.序:

一直使用wsl,版本是:Ubuntu 16.04.6 LTS;
前段時(shí)間想安裝個(gè)laravel8玩玩,但是得php7.3以上才可以;
因此打算下個(gè)php7.4;然鵝,apt源中沒(méi)這個(gè),只能編譯安裝;
之后,缺少各種擴(kuò)展,連fpm都沒(méi)有,都只得編譯安裝的那種;
好家伙,這就很凎了。
最后放棄了Ubuntu 16.04.6 LTS,又裝了Ubuntu 20.04.2 LTS;直接apt了。

Ⅱ.SRDS

為了下次在遇到這情況不再折騰,再玩玩docker吧。

Ⅲ.GO

下載docker客戶(hù)端

可能用到的docker配置:

{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "debug": true,
  "experimental": false,
  "insecure-registries": [],
  "registry-mirrors": [
    "https://1nj0zren.mirror.aliyuncs.com",
    "https://docker.mirrors.ustc.edu.cn",
    "http://f1361db2.m.daocloud.io",
    "https://registry.docker-cn.com"
  ]
}

找個(gè)輪子

我用的是:github地址,感謝大佬,輪子節(jié)省了很多時(shí)間。

遇到的問(wèn)題

我用了dcat-admin,構(gòu)建之后,靜態(tài)文件是無(wú)法加載的。

  • 解決方法:
    1、原因:nginx配置文件nginx/docker/config/default.conf中,php結(jié)尾的文件才能走到app這個(gè)容器(fastcgi_pass app:9000),其他的只能走nginx的容器

        set $root_path '/usr/share/nginx/html';
        set $php_path '/var/www/html/public';

        client_max_body_size 100m;

        charset utf-8;

        location ~ (\.html|\.css|\.js|\.jpg|\.jpeg|\.png|\.gif|\.ico|\.ttf|\.woff|\.woff2|\.xls|\.xlsx|\.docx|\.pdf|\.mpga|\.mp3|\.txt) {
             root $root_path;
       }
        location ~ \.php(.*)$ {
            root $php_path;
            fastcgi_pass app:9000;
            fastcgi_index index.php;
            fastcgi_buffering off;
            fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_param PATH_INFO $fastcgi_path_info;
            fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
            include fastcgi_params;
            fastcgi_intercept_errors on;
        }

2、解決:因?yàn)?code>docker/docker-compose.override.yml中,所以直接把項(xiàng)目下Public文件下的assets,vendor文件夾都拷到nginx下。

    web:
        build:
            context: ../nginx/
            dockerfile: docker/Dockerfile
        image: "laravel-nginx:latest"
        ports:
            - "80:80"
        volumes:
            - ../nginx:/usr/share/nginx/html

由于缺少job表,隊(duì)列執(zhí)行失敗

  • 解決方法:
php artisan queue:table
php artisan queue:failed-table
php artisan migrate

最開(kāi)始直接構(gòu)建是失敗的,文件是nginx/docker/Dockerfile,注釋掉下面代碼中間那行:

RUN chmod +x /usr/local/bin/docker-entrypoint.sh
# RUN ln -s /usr/local/bin/docker-entrypoint.sh / # backwards compat
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]

Ⅳ.常用命令

docker-compose up -d nginx 構(gòu)建建啟動(dòng)nignx容器
docker-compose exec nginx bash 登錄到nginx容器中
docker-compose down 刪除所有nginx容器,鏡像
docker-compose ps 顯示所有容器
docker-compose restart nginx 重新啟動(dòng)nginx容器
docker-compose run --no-deps --rm php-fpm php -v  在php-fpm中不啟動(dòng)關(guān)聯(lián)容器,并容器執(zhí)行php -v 執(zhí)行完成后刪除容器
docker-compose build nginx 構(gòu)建鏡像 。
docker-compose build --no-cache nginx   不帶緩存的構(gòu)建。
docker-compose logs  nginx 查看nginx的日志 
docker-compose logs -f nginx 查看nginx的實(shí)時(shí)日志
docker-compose config  -q 驗(yàn)證(docker-compose.yml)文件配置,當(dāng)配置正確時(shí),不輸出任何內(nèi)容,當(dāng)文件配置錯(cuò)誤,輸出錯(cuò)誤信息。 
docker-compose events --json nginx 以json的形式輸出nginx的docker日志
docker-compose pause nginx 暫停nignx容器
docker-compose unpause nginx 恢復(fù)ningx容器
docker-compose rm nginx 刪除容器(刪除前必須關(guān)閉容器)
docker-compose stop nginx 停止nignx容器
docker-compose start nginx 啟動(dòng)nignx容器
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容