Linux 下使用Docker 安装 web 环境 nginx+php+redis扩展+mysql (docker 二)
发布日期:2021-06-30 15:37:32 浏览次数:2 分类:技术文章

本文共 4911 字,大约阅读时间需要 16 分钟。

docker安装nginx 

1

docker search nginx

  

 

 

 2.拉取官方的镜像

1

docker pull nginx

  

 

 

 3.创建并运行容器,绑定映射端口

1

docker run --name nginx -p 80:80 -d nginx

  --name 这里是别名,使用docker ps 会最后显示names 这个名字 可以通过 docker exec -it name名字 bash  进入这个容器 修改配置 修改后使用 exit 退出  这个后面进行配置文件修改用的上

  -p  80:80    第一个80是服务器的端口,第二个80是docker容器端口,

  -d 要运行的容器名称 这里是nginx

以上命令开启 nginx 进行配置文件修改 需要每次进入容器中

如果不想每次进入容器修改配置文件 也可以将容器里的配置文件 包括静态页面访问路径 映射到宿主机上面的

就在镜像run的时候 加上参数 -v :绑定一个卷

-v 宿主机的路径:容器路径

宿主机路径必须存在 如果你映射配置文件 nginx.conf 宿主机上不存在 需要自己手动创建 然后填写相对应的配置文件内容 然后再执行命令  

比如所有关于web的配置信息都在一个目录中 你就手动自己建个目录 /mydata/nginx/ 或 /mydata/php  或 /mydata/redis  根据自己习惯创建

例如:docker run -d -p 80:80 --name nginx --privileged=true -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/log:/var/log/nginx nginx 

 

 

 

 上面运行报错了,这里是以前装了nginx,通过docker ps -a 查看

 

 

 现在进行清除命令:

1

docker rm `docker ps -a -q`

现在运行第三步  ,会成功。

1

docker run --name nginx -p 80:80 -d nginx<br>通过netstat -nltp 可以查看到80 端口已经启动。

 

此刻访问IP,nginx 正常运行起来

 

 

 

 

 

 

docker安装php

1.查找Docker Hub上的php镜像

1

docker search php

  

 

 

 2.拉取官方的镜像,标签为 php  冒号后面可跟版本号 php 截图中选择的phpdockerio/php72-fpm 这个一般不是官方的 我建议直接选择第一个 php 

1

docker pull php:7.3-fpm

  

 

 

 3.现在需要查看nginx 默认运行的路径 先进入nginx 容器 再找到/etc/nginx/conf.d/default.conf    查看默认访问路径

1

2

docker exec -it nginx bash

cat /etc/nginx/conf.d/default.conf -n

这个命令必须这个镜像跑起来后才能 进到这个容器里进行配置文件修改 

如果不想每次进入容器修改配置文件 也可以将容器里的配置文件 包括静态页面访问路径 映射到宿主机上面的

就在镜像run的时候 加上参数 -v :绑定一个卷

-v 宿主机的路径:容器路径

宿主机路径必须存在 如果你映射配置文件 nginx.conf 宿主机上不存在 需要自己手动创建 然后填写相对应的配置文件内容 然后再执行命令

例如:docker run -d -p 80:80 --name nginx --privileged=true -v /mydata/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /mydata/nginx/html:/usr/share/nginx/html -v /mydata/nginx/log:/var/log/nginx nginx 

 

 

 4.创建并运行php容器

1

docker run -p 9000:9000 --name phpfpm -v /mydata/nginx/php:/usr/share/nginx/html -d php:7.3-fpm

  

5.指定映射php文件目录为 /mydata/nginx/php 就在这个文件下创建个 index.php文件 随便写一段php代码

 

 

 6.现在就是要nginx 配置访问php 文件了,如果直接访问就会是404 

  6.1 获取到phpfpm 这个容器的ip

1

docker inspect -f '{

{range .NetworkSettings.Networks}}{
{.IPAddress}}{
{end}}'
 phpfpm

  

 

 最后这个内网ip是:172.17.0.3,这个ip 会配置到/etc/nginx/conf.d/default.conf 

 6.2 配置nginx 支持php 文件访问  如果上面在启动 nginx 已经映射了nginx的配置文件 则不需要再进入容器中修改 直接去映射的那个文件进行修改

1

2

3

4

5

6

docker exec -it nginx bash

cd /etc/nginx/conf.d/

 

apt-get update

apt-get install vim

vim default.conf

在代码里面加入 9000 端口这段代码

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

server {

    listen       80;

    listen  [::]:80;

    server_name  localhost;

 

    #charset koi8-r;

    #access_log  /var/log/nginx/host.access.log  main;

 

    location / {

        root   /usr/share/nginx/html;

        index  index.html index.htm;

    }

     

    #error_page  404              /404.html;

 

    # redirect server error pages to the static page /50x.html

    #

    error_page   500 502 503 504  /50x.html;

    location = /50x.html {

        root   /usr/share/nginx/html;

    }

 

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80

    #

    #location ~ \.php$ {

    #    proxy_pass   http://127.0.0.1;

    #}

 

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

    # 加入以下的代码 可以访问php文件

    location ~ \.php$ {

        root           /usr/share/nginx/html;

        fastcgi_pass   172.17.0.3:9000;  #也可以写  - - name 后的名字

        fastcgi_index  index.php;

    fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;

        #fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;

        include        fastcgi_params;

    }

 

    # deny access to .htaccess files, if Apache's document root

    # concurs with nginx's one

    #

    #location ~ /\.ht {

    #    deny  all;

    #}

}

 安装redis扩展 

1.进入php容器

docker exec -it myFpm bash

2.如下操作挨个去执行:

curl -L -o /tmp/redis.tar.gz https://github.com/phpredis/phpredis/archive/3.1.3.tar.gz

tar xfz /tmp/redis.tar.gz

rm -r /tmp/redis.tar.gz

mkdir -p /usr/src/php/ext

mv phpredis-3.1.3 /usr/src/php/ext/redis

docker-php-ext-install redis

重启php 

docker restart phpfpm

 

6.3 重启nginx ,即可访问index2.php

1

docker restart nginx

  

 

 

docker安装mysql

1.查找镜像:

docker search mysql

也可以去官网查看镜像tag,选择自己需要的版本,否则会下载最新版本:https://hub.docker.com/_/mysql/

2.下载镜像(如上一步,可以指定想要的版本,不指定则为最新版):

docker pull mysql

3.通过镜像创建容器并运行:

docker run -p 3306:3306 --name mymysql -v $PWD/conf:/etc/mysql/conf.d -v $PWD/logs:/logs -v $PWD/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mysql
  • -p 3306:3306:将容器的 3306 端口映射到主机的 3306 端口。

  • -v -v $PWD/conf:/etc/mysql/conf.d:将主机当前目录下的 conf/my.cnf 挂载到容器的 /etc/mysql/my.cnf。

  • -v $PWD/logs:/logs:将主机当前目录下的 logs 目录挂载到容器的 /logs。

  • -v $PWD/data:/var/lib/mysql :将主机当前目录下的data目录挂载到容器的 /var/lib/mysql 。

  • -e MYSQL_ROOT_PASSWORD=123456:初始化 root 用户的密码。

复制代码

复制代码

此时,用navicat for mysql连接mysql发现报错:Client does not support authentication protocol requested  by server。。。

解决方案:

进入容器:

docker exec -it 62349aa31687 /bin/bash

进入mysql:

mysql -uroot -p

授权:

mysql> GRANT ALL ON *.* TO 'root'@'%';

刷新权限:

mysql> flush privileges;

更新加密规则:

mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER;

更新root用户密码:

mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';

刷新权限:

mysql> flush privileges;

 

 

 

 以上是MySQL安装的全过程,目前的环境搭建已经全部完成了。

转载地址:https://jsonll.blog.csdn.net/article/details/113178708 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:vue 使用fullcalendar里各种组件开发日程管理或时间管理
下一篇:linux centos7 安装docker (docker 一)

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月11日 06时57分11秒