运维部署Docker容器思科DevNet

Ubuntu18.10中使用Docker搭建LNMP环境-多容器

2018-12-16  本文已影响6人  南瓜方糖
docker

没有使用 dockerfile 搭建,这样搞一遍对于新手来说应该更有助于理解。
最好到 [ docker hub ] 注册一个账号,里边可以查看都有哪些镜像可以使用,也能把自己的镜像存过去。

另外,这里还是有几个坑需要注意一下:


docker 安装

进入系统后,打开终端执行下 docker,然后根据返回信息安装。
不是最新版,不过也没关系,只差几个小版本号。

介意的去这里下载。

在 ubuntu 系统中,docker 被添加了 masked,也就是被禁止建立启动链接。
所以安装完成后不需要启动,直接执行下 docker --version 看看是否安装成功。

wu@ubuntu:~$ docker --version
Docker version 18.06.1-ce, build e68fc7a

非 root 用户使用 docker

docker 安装后,很多命令需要 root 用户才能执行,太烦,看到官网有说明,所以放心改。

官网截图
sudo groupadd docker
sudo usermod -aG docker $USER
reboot

准备工作

在 home/用户名/ 文件夹下创建以下文件夹和内容:

wu@ubuntu:~/www
├── data
├── nginx
│   └── conf.d
│       └── default.conf
└── web
    ├── index.html
    └── index.php


这几个文件夹要做挂载用,然后 default.conf 内容如下:

server {
    listen       80;
    server_name  localhost;

    location / {
        root   /usr/share/nginx/html;
        index  index.php  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    location ~ \.php$ {
    fastcgi_pass   php-fpm-7-3:9000;
        fastcgi_index  index.php;
        fastcgi_param  SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;
        include        fastcgi_params;
    }
}

mysql 安装

因为 php 需要连接 mysql ,而 nginx 需要连接 php ,所以安装顺序为 mysql > php > nginx 。

下载 mysql 5.7 镜像,然后挂载数据文件夹。

docker pull mysql:5.7
docker run --name mysql-5-7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d -v ~/www/data:/var/lib/mysql mysql:5.7

php 安装

下载 php-fpm:7.3 ,然后运行并关联到 mysql。

docker pull php:7.3-fpm 
docker run --name php-fpm-7-3 -d -v ~/www/web:/var/www/html --link mysql-5-7:mysql php:7.3-fpm 

nginx 安装

docker pull nginx
docker run -d --name nginx -p 80:80 -v ~/www/web/:/usr/share/nginx/html  -v ~/www/nginx/conf.d:/etc/nginx/conf.d  --link php-fpm-7-3:php-fpm nginx  

打开浏览器访问 localhost :


phpinfo

composer 安装

本地没有 php 就装不上 composer, 又不想进 php 容器去装,查了一圈资料也没个详细点的说明,还是用镜像吧。镜像唯二的缺点就是 命令太长不能更换 composer 源

获取 composer 镜像,然后挂载到本地目录创建 laravel 5.7 的新项目。

docker pull composer
docker run --rm -it  --volume ~/www/web:/app  composer create-project  laravel/laravel laravel 5.7
cd ~/www/web
sudo chown -R wu.wu laravel/
sudo chmod +777 laravel/storage 

加上 --rm ,每次运行完删掉容器避免堆积,反正这个容器也不能复用。
然后再修改 nginx 配个域名,加下 hosts,打开浏览器,完美。


image.png

artisan 使用

有了 composer 的经验,artisan 想必也是一个镜像。
到 docker hub 上搜一把,果然很多,但是没有官方认证过的,而且不用 dockerfile 来搭建也没有查到相关的资料,所以这里还是暂时放弃挣扎吧。

docker exec -it php-fpm-7-3 bash
cd /usr/share/nginx/html/laravel
php artisan make:auth

刷新后可以看到结果已经出来了。

auth

结果出来了,试下数据库的连接,先配置下 mysql 远程访问:

docker exec -it mysql-5-7 bash
mysql -uroot -p
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
flush privileges;

商店直接安装 datagrip ,打开并新建链接,ok。


2018-12-16 12-34-16 的屏幕截图.png

结尾

多容器的手工搭建就先到这里吧,最后的 artisan 实在是太不方便,接下来研究下用 docker-compose 和 dockerfile 来搭建会不会方便些。

上一篇下一篇

猜你喜欢

热点阅读