美文网首页
尝试docker开发(win10)

尝试docker开发(win10)

作者: 段义纬 | 来源:发表于2021-07-17 17:58 被阅读0次

    Ⅰ.序:

    一直使用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)

          本文链接:https://www.haomeiwen.com/subject/cdpwpltx.html