• windows11 下搭建 Docker 开发环境记录(少踩坑版)


    windows11 下搭建 Docker 开发环境记录(少踩坑版) | Laravel China 社区

    前置:
    # 安装步骤:
    # 1、打开 linux 子系统和虚拟机平台
    # 2、store 安装 windows terminal
    # 3、安装 vscode 
    # 4、store 搜索 ubuntu 安装一个
    # 5、点击启动设置用户名密码
    # 6、安装 Docker Desktop (不要勾选代替 hyper-v,否则造成站点访问慢)(安装完也可在设置取消勾选 Use the WSL 2 based engine:若已编译完成需重新编译容器)
    # 7、设置打开 wsl2 & Resources WSL integration 打开安装的版本
    1、 克隆仓库:
    git clone https://github.com/Laradock/laradock.git | git clone https://hub.fastgit.org/Laradock/laradock.git
    2、复制 env
    cp .env.example .env
    3、修改 .env 配置
    # 版本及路径根据实际需要修改
    APP_CODE_PATH_HOST=../code
    DATA_PATH_HOST=../data
    PHP_VERSION=7.2.34
    MYSQL_VERSION=5.7.34
    CHANGE_SOURCE=true #(In China) 
    WORKSPACE_TIMEZONE=Asia/Shanghai
    WORKSPACE_NODE_VERSION=18.17.1 WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node WORKSPACE_NPM_REGISTRY=https://registry.npm.taobao.org
    MYSQL_VERSION=5.7.42
    #各项扩展(建议只打开用到的,防止编译错误) 
    # 默认 mysql 及 redis 密码是否需要更改
    修改 workspace/Dockerfile
    每个 https://raw.githubusercontent.com 前面加上 https://ghproxy.com/ 如果需要在容器里执行 npm run dev 或 vite 要把端口映射出来

    统一时区:修改 docker-compose.yml

    nginx/redis/: port 后面增加: environment: - TZ=${WORKSPACE_TIMEZONE}
    4、启动 docker 容器
    docker compose up -d nginx mysql redis
    # (php-fpm 和 workspace 为默认编译 docker-in-docker) 
    # 可选 phpmyadmin(localhost:8081 mysql root root)

    # 启动容器后如需修改端口映射或其它 .env 配置修改后停止容器,
    # 然后执行 docker compose up -d xxx 就可以了
    5、执行命令
    docker ps # 找到 CONTAINER ID docker exec -it xxx bash

    # 在主机修改项目配置:
    DB_HOST=mysql
    REDIS_HOST=redis
    ...
    6、新增扩展重新编译:
    docker compose build xxx #e.g: docker compose build workspace
    7、多 PHP 版本
    # .env 增加配置
    PHP81_VERSION=8.1
    # docker-compose.yml: 复制一份 PHP_FPM php-fpm81
    LARADOCK_PHP_VERSION=${PHP81_VERSION}
    volumes: - ./php-fpm/php${PHP81_VERSION}.ini:/usr/local/etc/php/php.ini
    expose: - "9081" # 自定义端口

    # 站点修改:
    fastcgi_pass php-fpm82:9082;
    nginx: depends_on: - php-fpm - php-fpm82
    # 启动
    docker compose up -d php-fpm81
    8、多 workspace
    # docker-compose.yml: 复制一份 workspace workspace81
    LARADOCK_PHP_VERSION=${PHP81_VERSION}
    # 不同版本 PHP 扩展不兼容的在复制的版本里直接指定

    # 启动
    docker compose up -d workspace81
    重启所有容器:
    docker restart $(docker ps -a -q)
    设置开启自启:
    docker update --restart=always
    附:
    导入主机 sql 文件:
    docker cp ./dir docker-id:/home/tmp/
    docker exec -it docker-id bash
    cd /home/tmp
    mysql -uroot -p
    use xxx;
    source xxx.sql
    迁移 Docker 存储位置(释放 C 盘空间):
    # 停止 Docker 容器:
    docker compose stop
    # 关闭发行版:
    wsl --shutdown
    # 导出 docker-desktop-data 发行版:
    wsl --export docker-desktop-data D:\wsl\docker\tmp\docker-desktop-data.tar 
    # 注销 docker-desktop-data 发行版:
    wsl --unregister docker-desktop-data
    # 导入 docker-desktop-data 到期望迁移的目录:
    wsl --import docker-desktop-data D:\wsl\docker\data\ D:\wsl\docker\tmp\docker-desktop-data.tar --version 2
    # 删除导出临时文件、迁移另一个 Docker 发行版 docker-desktop (可选,占用空间很小) 
    # 启动 docker destktop 启动容器:
    docker compose start nginx mysql redis
    编译错误:
    # 打开 source_change 关闭代理 反之打开代理 多试几次
    Docker 国内加速
    # 网易:
    https://hub-mirror.c.163.com
    # 百度:
    https://mirror.baidubce.com
    GPK 错误:
    # wsl 里执行
    sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 23E7166788B63E1E
    ~ 下新增 .wslconfig

    wsl 占用内存过高问题
    # Settings apply across all Linux distros running on WSL 2
    [wsl2]

    # Limits VM memory to use no more than 4 GB, this can be set as whole numbers using GB or MB
    memory=2GB 

    # Sets the VM to use two virtual processors
    processors=1

    # Specify a custom Linux kernel to use with your installed distros. The default kernel used can be found at https://github.com/microsoft/WSL2-Linux-Kernel
    # kernel=C:\\temp\\myCustomKernel

    # Sets additional kernel parameters, in this case enabling older Linux base images such as Centos 6
    # kernelCommandLine = vsyscall=emulate

    # Sets amount of swap storage space to 8GB, default is 25% of available RAM
    swap=2GB

    # Sets swapfile path location, default is %USERPROFILE%\AppData\Local\Temp\swap.vhdx
    # swapfile=C:\\temp\\wsl-swap.vhdx

    # Disable page reporting so WSL retains all allocated memory claimed from Windows and releases none back when free
    # pageReporting=false

    # Turn off default connection to bind WSL 2 localhost to Windows localhost
    localhostforwarding=true

    # Disables nested virtualization
    # nestedVirtualization=false

    # Turns on output console showing contents of dmesg when opening a WSL 2 distro for debugging
    # debugConsole=true
    Copy
    本作品采用《CC 协议》,转载必须注明作者和本文链接

    ————————————————
    原文作者:qingye
    转自链接:https://learnku.com/articles/83358
    版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。

  • 相关阅读:
    数字企业,全链协同 | 数商云•瓴犀产品3.0战略发布会即将召开
    大学物理---质点运动学
    《Effective Java》阅读笔记
    化妆品行业的数字进化论:S2B2B电商网站如何助力化妆品企业打造增长新动能
    centOS7集群hadoop环境搭建
    大橙子vfed 5.0去授权完美破解主题模版源码 | 苹果CMS
    06.webpack性能优化--构建速度
    性能测试理论1 | 性能测试难点问题梳理
    多用户登录(列表)
    【python基础】复杂数据类型-字典(增删改查)
  • 原文地址:https://blog.csdn.net/sinat_30603081/article/details/134455020