ubuntu16、18、20安装docker、docker-compose、dnmp环境搭建
前置必装软件
安装git
sudo apt-get install git
安装docker
sudo apt-get autoremove docker-ce docker-engine docker.io sudo apt-get update sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo apt-get update sudo apt-get install -y docker-ce
这里是文档 https://docs.docker.com/install/linux/docker-ce/ubuntu/#install-docker-ce-1
安装docker-compose
下载docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
修改权限
sudo chmod +x /usr/local/bin/docker-compose
查看版本信息
docker-compose --version
文档和下载地址https://github.com/docker/compose/releases
使用dnmp项目安装
配置镜像
首先配置阿里云的镜像库,https://cr.console.aliyun.com/cn-shanghai/instances/mirrors 下面是我的配置,不保证你看到这篇文章时还可以用,最好自己去阿里云申请一个
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://tg9ao60c.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
安装openresty mysql5.7 php72 redis
本项目原地址为 https://github.com/yeszao/dnmp 我自己直接弄过来后修改啦里面的mysql版本为5.7并且把配置文件直接设置好,为啦一键安装方便
下面安装方法为1.x安装方法,原项目已经更新到2.x,请稳步github查看最新的安装和使用方法
clone dnmp项目
sudo git clone https://gitee.com/ainiku/dnmp.git
如果不是root用户,还需将当前用户加入docker用户组:
sudo gpasswd -a ${USER} docker
开始安装
cd dnmp sudo docker-compose up -d
到这里就算成功啦
如果中间有提示让你 docker-compose build 的话再运行下下面命令编译(这种情况是因为项目默认只安装内置的php扩展,如果添加啦新的扩展后需要再编译下),如下图
sudo docker-compose build
服务管理
请在下面命令后面加上服务器名称,dnmp支持的服务名有:nginx、openresty、php72、php56、mysql、mongo、redis、phpmyadmin、phpredisadmin、elasticsearch、adminmongo、rabbitmq、kibana
sudo docker-compose up # 创建并且启动所有容器 sudo docker-compose up 服务1 服务2 ... # 创建并且启动指定的多个容器 sudo docker-compose up -d 服务1 服务2 ... # 创建并且已后台运行的方式启动多个容器 sudo docker-compose start 服务1 服务2 ... # 启动服务 sudo docker-compose stop 服务1 服务2 ... # 停止服务 sudo docker-compose restart 服务1 服务2 ... # 重启服务 sudo docker-compose build 服务1 服务2 ... # 构建或者重新构建服务 sudo docker-compose rm 服务1 服务2 ... # 删除并且停止容器 sudo docker-compose down 服务1 服务2 ... # 停止并删除容器,网络,图像和挂载卷
php版本切换
直接在nginx配置里修改
fastcgi_pass php72:9000; fastcgi_pass php56:9000; #修改后重启nginx服务器 docker exec -it dnmp_openresty_1 openresty -s reload #或者使用下面 docker-compose restart openresty
主机环境配置
在主机执行php命令
打开 ~/.bashrc 文件添加下面命令然后执行 source ~/.baserc 让配置生效,就可以在主机命令行中直接执行 php -v 命令
php () { tty= tty -s && tty=--tty sudo docker run \ $tty \ --interactive \ --rm \ --volume $PWD:/var/www/html:rw \ --workdir /var/www/html \ dnmp_php72 php "$@" }
快捷操作命令
跟上面同样的操作,添加进去后就可以在主机命令行执行 d... 别名来执行对应的命令
alias dnginx='sudo docker exec -it dnmp_nginx_1 /bin/sh' alias dphp72='sudo docker exec -it dnmp_php72_1 /bin/sh' alias dphp56='sudo docker exec -it dnmp_php56_1 /bin/sh' alias dmysql='sudo docker exec -it dnmp_mysql_1 /bin/bash' alias dredis='sudo docker exec -it dnmp_redis_1 /bin/sh'
安装composer
在主机HOST中使用composer,创建一个目录,用以保存composer的配置和缓存文件,要注意目录的权限
sudo mkdir ~/dnmp/composer sudo chmod 777 ~/dnmp/composer
在~/.bashrc文件添加下面代码后,运行 source ~/.bashrc 使用命令生效
composer () { tty= tty -s && tty=--tty sudo docker run \ $tty \ --interactive \ --rm \ --user $(id -u):$(id -g) \ --volume ~/dnmp/composer:/tmp \ --volume /etc/passwd:/etc/passwd:ro \ --volume /etc/group:/etc/group:ro \ --volume $(pwd):/app \ composer "$@" }
然后就可以在任何地方使用composer命令啦
composer -v
特别注意
web项目中连接mysql主机的时候 host应该填写 dnmp_mysql_1 如果你填localhost 127.0.0.1会报错,
也可以创建一个桥接网络
下面的localNet是网络名字,可自行修改;关于192.168.0.0这个子网,也可以自行定义.
默认按照下面的命令,执行后将可以通过192.168.0.1访问宿主机.
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 localNet
地址直接用 192.168.0.1 就可以访问宿主机