尝试docker开发(win10)

Ⅰ.序:

一直使用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_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、解决:因为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容器

你可能感兴趣的:(尝试docker开发(win10))