Ⅰ.序:
一直使用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_passapp: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容器