laradock安装

docker 文档
laradock 中文文档

Laradock注意事项

安装依赖

git

yum install -y git

docker

  • 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
  • 设置stable镜像仓库
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
或
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 更新yum软件包索引
yum makecache fast

如果这是自添加 Docker 镜像仓库以来您首次刷新软件包索引,系统将提示您接受 GPG 密钥,并且将显示此密钥的指纹。验证指纹是否正确,并且在正确的情况下接受此密钥。指纹应匹配 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35。

  • 安装docker

1.下载最新docker社区版,安装指定版本:

yum list docker-ce.x86_64  --showduplicates | sort -r    #从高到低列出Docker-ce的版本

2.安装最新版本:

yum -y install docker-ce

自启动docker

systemctl start docker

测试docker

docker version

安装docker-compose

  • 安装:
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
curl -L https://github.com/docker/compose/releases/download/1.25.0/docker-compose-Linux-x86_64 -o /usr/local/bin/docker-compose   # 等效上面的命令
chmod +x /usr/local/bin/docker-compose

备注:linux环境uname命令可显示电脑和操作系统相关信息。uname -s显示操作系统名称;uname -m显示电脑类型。

  • 查看版本:
docker-compose --version
  • docker-compose常用命令
docker-compose -h                           # 查看帮助

docker-compose up                           # 创建并运行所有容器
docker-compose up -d                        # 创建并后台运行所有容器
docker-compose -f docker-compose.yml up -d  # 指定模板
docker-compose down                         # 停止并删除容器、网络、卷、镜像。

docker-compose logs       # 查看容器输出日志
docker-compose pull       # 拉取依赖镜像
dokcer-compose config     # 检查配置
dokcer-compose config -q  # 检查配置,有问题才有输出

docker-compose restart   # 重启服务
docker-compose start     # 启动服务
docker-compose stop      # 停止服务

安装laradock

  • 在项目同级目录下安装
git clone https://github.com/LaraDock/laradock.git
  • 启动 LaraDock

进入 laradock 目录将 env-example 重命名为 .env

cd laradock
cp env-example .env

运行容器

docker-compose up -d nginx mysql redis

由于Laradock中的软件源并没有为国内做优化,都是默认在国外的。所以构造速度视网络情况,如果比较慢可以只构建基本的nginx和mysql,它们会自动构建php-fpm 和 workspace这两个两个容器,后续需要什么服务等要用到时候再去构建。如果特别的慢可以去找下Laradock国内修改版的。

默认情况下,创建的容器具有当前目录名称作为后缀(例如laradock_workspace_1)

注:所有Web服务器容器nginx,apache..依赖于php-fpm,这意味着如果您运行其中任何一个,它们将自动php-fpm为您启动容器,因此无需在 up 命令中明确指定它。

  • Nginx 配置
    laradock/nginx/sites 下新建 blog.conf 文件
server {

    listen 80 ;
    listen [::]:80 ;

    # For https
    # listen 443 ssl default_server;
    # listen [::]:443 ssl default_server ipv6only=on;
    # ssl_certificate /etc/nginx/ssl/default.crt;
    # ssl_certificate_key /etc/nginx/ssl/default.key;

    server_name blog.test;
    root /var/www/blog/public;
    index index.php index.html index.htm;

    location / {
         try_files $uri $uri/ /index.php$is_args$args;
    }

    location ~ \.php$ {
        try_files $uri /index.php =404;
        fastcgi_pass php-upstream;
        fastcgi_index index.php;
        fastcgi_buffers 16 16k;
        fastcgi_buffer_size 32k;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        #fixes timeouts
        fastcgi_read_timeout 600;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }

    location /.well-known/acme-challenge/ {
        root /var/www/letsencrypt/;
        log_not_found off;
    }
}

重启 Nginx

配置一下域名信息

C:\Windows\System32\drivers\etc\hosts

部署项目

编辑 laradock 目录下的 .env 文件,制定项目代码目录

APP_CODE_PATH_HOST=../wwwroot/

这样本地下的 ../wwwroot目录 就和 容器中的 /var/www 目录形成映射。

进入到工作区 workspace

docker-compose exec workspace bash
cd /var/www/

安装 laravel 项目

配置和查看composer镜像

使用 composer config -l -g 查看所有全局配置
composer config -l -g
//默认配置 
composer config -g repo.packagist composer https://packagist.org

//切换国内源
composer config -g repo.packagist composer https://packagist.phpcomposer.com

composer create-project --prefer-dist laravel/laravel blog

管理mysql

默认情况下 laradock 安装的 MySQL 版本为 latest ,也就是8.0。但是 8.0 在 Mac 下 使用 Sequel Pro 连接会出现一点问题、导致连接不上,所以切到5.7 的版本

编辑 laradock 下 .env 文件

MYSQL_VERSION=5.7
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=secret
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root

修改 MYSQL_VERSION 为 5.7

接着重新 build MySQL

docker-compose build --no-cache mysql

运行MySQL

进入容器管理mysql

//启动容器的mysql
docker-compose up -d mysql

//查看正在运行的容器
docker ps

进入容器
运行 docker-compose exec mysql bash 进入 mysql 容器,运行
mysql -uroot -p输入密码进入mysql
账号密码是laradock框架下的.env文件里面的

laravel 中使用 MySQL

在 laravel 中使用 MySQL 需要指定 DB_HOST 为 mysql

DB_CONNECTION=mysql
DB_HOST=mysql

在 workspace 容器中执行 php artisan

docker-compose exec workspace bash
cd /var/www/wwwroot/blog
php artisan migrate

由于多个 Docker 容器间的关系类似于依赖网络进行连接的主机,要想通过 PHP 容器中的脚本访问 MySQL 容器的数据库服务,需要具有远程连接的数据库用户,执行以下命令进行创建:

GRANT ALL PRIVILEGES ON *.* TO username@'%' IDENTIFIED BY 'password';

注意以下几点:

. 表示对所有数据库的所有表都具有权限;

% 表示不限制连接的主机 IP,为了安全起见,这里可以把 % 改为 php。注意,这里的 php 其实相当于一个域名,Docker 的内置 DNS 会将其解析为 PHP 容器的地址;

修改 username 和 password 为自定义的用户名和密码。

  • 远程连接
    若想要在本地(非 Docker 宿主机)连接到数据库容器,需要利用端口映射,将数据库 Docker 的 3306 端口映射到主机的某个端口(如:12345),然后在本地通过访问服务器的 $server_ip:12345 并附带具有远程访问权限的用户名和密码进行远程连接(注意 % 的问题)。

在本文所用的 docker-compose.yml 中已经默认打开了 3306:3306 的端口映射,大家可以根据需要进行设置。

laradock 常用命令

停止所有容器运行 

docker-compose stop

停止单个容器运行

docker-compose stop {container name}

删除所有容器

docker-compose down

删除指定容器 

docker-compose down {container name}

后台启动容器(本地没有镜像则会先pull) 

docker-compose up -d {container name}

进入容器 

docker-compose exec {container name} bash

查看正在运行的容器

docker-compose ps

查看历史所有的容 器

docker-compose ps -a

查看日志文件

docker logs {container name}

重建所有容器 

docker-compose build

重建某个容器 

docker-compose build {container name}

docker-compose.yml中重建docker容器

docker-compose up -d --force-recreate --build {container name}

退出容器

exit     

在修改 docker-compose.yml 配置后,重启相关(非全部)容器,以使配置生效
docker-compose up --detach --build "<service name>"

安装nodejs+npm+bower

1.下载并解压

下载
wget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.xz

解压:
tar -xvf node-v10.15.3-linux-x64.tar.xz

进入解压目录的bin中,检查是否可以安装成功
./node -v

配置软连接,使全局都可以使用node命令

mv node-v10.15.3-linux-x64 node  // 修改解压包名称

ln -s /usr/local/node/bin/node /usr/bin/node  --将node源文件映射到usr/bin下的node文件

ln -s /usr/local/node/bin/npm /usr/bin/npm

laradock采坑

laradock 启动时 nvm 报错 raw.githubusercontent.com

报错:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused /bin/sh: 1: .: Can't open /home/laradock/.nvm/nvm.sh

从格林威治 改为 中国

WORKSPACE_TIMEZONE=PRC

第一种就是之前各位说的修改 hosts 文件;

Ping 一下这个地址 raw.githubusercontent.com 是否能 Ping 得通

ping 不通后 在 https://www.ipaddress.com/ 查询 raw.githubusercontent.com 的真实 IP, 然后手工添加到 /etc/hosts, 比如 199.232.28.133 raw.githubusercontent.com
修改本地 host 文件

在Linux下修改/etc/hosts,若想要它立刻生效,运行source /etc/hosts应该就可以了

  • 测试端口是否ping的方法
第一种:
telnet ip port
说明:

ip:是测试主机的ip地址

port:是端口,比如80

第二种:

curl ip:port

说明:

ip:是测试主机的ip地址

port:是端口,比如80

如果远程主机开通了相应的端口,都会输出信息,如果没有开通相应的端口,则没有任何提示,需要CTRL+C断开。

第二种如下:

如果你实在想用node,可以尝试以下方法是否可以解决

NVM 慢的问题
在 env 文件中设置 
WORKSPACE_NVM_NODEJS_ORG_MIRROR = https://npm.taobao.org/mirrors/node 

CHANGE_SOURCE=true
UBUNTU_SOURCE=aliyun
WORKSPACE_TIMEZONE=PRC

如果用不上node的话,就去.env配置文件里把node,yarn,npm等与node相关的下载配置改为false。

WORKSPACE_NVM_NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node 
WORKSPACE_INSTALL_NODE=false
WORKSPACE_NODE_VERSION=node
WORKSPACE_NPM_REGISTRY=
WORKSPACE_INSTALL_PNPM=false
WORKSPACE_INSTALL_YARN=false
WORKSPACE_YARN_VERSION=latest
WORKSPACE_INSTALL_NPM_GULP=false
WORKSPACE_INSTALL_NPM_BOWER=false
WORKSPACE_INSTALL_NPM_VUE_CLI=false
WORKSPACE_INSTALL_NPM_ANGULAR_CLI=false

php扩展 有些也是因为网络问题,无法下载,请把配置改为false

使用laradock时,mysql问题

laradock 默认使用 mysql 8.0 以上的版本,可能会导致各种各样的问题出现。
所以, 不想过多折腾的话,建议使用 mysql 5.7 即可。

docker安装mysql [ERROR] [FATAL] InnoDB: Table flags are 0 in the data dictionary but the flags in file ./ibdata1 are 0x4800!

出现的原因是 一开始我是用了latest ,然后数据目录存了一些数据,我换成5,7的时候 没有把数据删掉,再重新启动的时候,数据目录还是指向原来的数据,版本的数据格式不一样, 清空 数据目录的数据,便可以启动了
修改.env 为5.7

MYSQL_VERSION=5.7
MYSQL_DATABASE=default
MYSQL_USER=default
MYSQL_PASSWORD=root
MYSQL_PORT=3306
MYSQL_ROOT_PASSWORD=root
MYSQL_ENTRYPOINT_INITDB=./mysql/docker-entrypoint-initdb.d

然后完整的删除 ~/.laradock/data/mysql 

/root/.laradock/data/mysql

删除完,运行 docker-compose build --no-cache mysql

重启mysql容器 docker-compose restart mysql

运行 docker-compose exec mysql bash 进入 mysql 容器,运行 mysql -uroot -proot

关于 composer 下载时出现 [InvalidArgumentException] Could not find package 问题

镜像地址问题。从而导致无法找到框架包,laravel也是一样提示。

# 解决方案,切换 composer 镜像地址
# 阿里云镜像
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/

将nginx.config的user改为和启动用户一致 并修改laravel的相关权限

vim laradock/nginx/sites/blog.conf

user root;

修改laravel的相关权限

chmod -R 777 storage/*

Laradock 镜像替换

因为默认用的是国外 Debian 镜像源,故在执行 apt-get 等命令拉取软件包时会失败,我们需手动在对应的 Dockerfile 中添加一个 RUN 指令来替换掉默认的镜像源

需根据自己当前 Laradock 版本查看引用的系统镜像及其版本注意不同,其他系统(eg: CentOS)请对症下药。

posted @ 2020-12-13 18:18  caibaotimes  阅读(502)  评论(0)    收藏  举报