Ⅰ.序:
一直使用wsl,版本是:Ubuntu 16.04.6 LTS;
前段时间想安装个laravel8玩玩,但是得php7.3以上才可以;
因此打算下个php7.4;然鹅,apt源中没这个,只能编译安装;
之后,缺少各种扩展,连fpm都没有,都只得编译安装的那种;
好家伙,这就很凎了。
最后放弃了Ubuntu 16.04.6 LTS,又装了Ubuntu 20.04.2 LTS;直接apt了。
Ⅱ.SRDS
为了下次在遇到这情况不再折腾,再玩玩docker吧。
Ⅲ.GO
下载docker客户端
可能用到的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"
]
}
找个轮子
我用的是:github地址,感谢大佬,轮子节省了很多时间。
遇到的问题
我用了dcat-admin,构建之后,静态文件是无法加载的。
- 解决方法:
1、原因:nginx配置文件nginx/docker/config/default.conf
中,php结尾的文件才能走到app
这个容器(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、解决:因为docker/docker-compose.override.yml
中,所以直接把项目下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表,队列执行失败
- 解决方法:
php artisan queue:table
php artisan queue:failed-table
php artisan migrate
最开始直接构建是失败的,文件是
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 构建建启动nignx容器
docker-compose exec nginx bash 登录到nginx容器中
docker-compose down 删除所有nginx容器,镜像
docker-compose ps 显示所有容器
docker-compose restart nginx 重新启动nginx容器
docker-compose run --no-deps --rm php-fpm php -v 在php-fpm中不启动关联容器,并容器执行php -v 执行完成后删除容器
docker-compose build nginx 构建镜像 。
docker-compose build --no-cache nginx 不带缓存的构建。
docker-compose logs nginx 查看nginx的日志
docker-compose logs -f nginx 查看nginx的实时日志
docker-compose config -q 验证(docker-compose.yml)文件配置,当配置正确时,不输出任何内容,当文件配置错误,输出错误信息。
docker-compose events --json nginx 以json的形式输出nginx的docker日志
docker-compose pause nginx 暂停nignx容器
docker-compose unpause nginx 恢复ningx容器
docker-compose rm nginx 删除容器(删除前必须关闭容器)
docker-compose stop nginx 停止nignx容器
docker-compose start nginx 启动nignx容器