Windows docker

标题

下载的docker点击
在这里插入图片描述
登录阿里云找到镜像加速器把地址复制进去
在这里插入图片描述

开始安装nginx

docker search nginx

拉取官方的nginx

docker pull nginx

tips:系统会默认拉去最后一个nginx


查看镜像

docker images

启动一个nginx镜像 映射本地目录到nginx容器 需要自己创建目录

docker run -d -p 8080:80 --name nginx1 nginx
    -d:后台运行
    -p:设置端口号映射到本机,将 80 端口映射到本机的 8080 端口,外部访问8080端口即可
    --name:设置容器名称

接下来是关键
创建目录 到指定目录 当初我创建的时候多写了一个docker 憨derder

/docker/nginx/nginx/conf
/docker/nginx/nginx/conf.d
/docker/nginx/nginx/www
/docker/nginx/nginx/log
在本地创建目录 映射docker文件到本地

在这里插入图片描述
nginx的结构目录在容器中:

docker cp 容器名:/etc/nginx/nginx.conf E:\docker\Docker\nginx\conf\

在这里插入图片描述

需要把conf.d下的default.conf 拷贝到本地主配置文件位置

第一种 docker cp nginx1:/etc/nginx/conf.d/default.conf E:\docker\Docker\nginx\conf.d\default.conf

第二种 docker cp 4aa7fdf3db6d:/etc/nginx/nginx.conf .  有个点

如果你想在本地去添加location 需要把这些容器中的配置挂载到本地:

配置文件相对来说有点麻烦,一般nginx只需要加载nginx.conf就可以了,在dokcer中,是首先加载nginx.conf,然后在nginx.conf有这么一行include /etc/nginx/conf.d/*.conf;,就是加载conf.d目录下的配置文件。所以对于配置只需要挂载到conf.d,覆盖掉即可。
在这里插入图片描述
在这里插入图片描述
启动成功

我是直接拉取的docker hub的nginx镜像
在容器中相关位置分别是:
日志位置:/var/log/nginx/
配置文件位置:/etc/nginx/
主配置文件位置:/etc/nginx/conf.d
项目位置:/usr/share/nginx/html

然后停止stop nginx(nginx1 是启动时起的名字) 删掉 rm掉nginx在这里插入图片描述
重新运行nginx镜像

docker run -it -d -p 808:80 --name nginx1 
-v E:/docker/Docker/nginx/www:/usr/share/nginx/html #把项目放进去
-v E:/docker/Docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf 
-v E:/docker/Docker/nginx/conf.d:/etc/nginx/conf.d 
-v E:/docker/Docker/nginx/logs:/var/log/nginx 
#--link php1:php 
  nginx

命令说明:

  -p 808:80: 将容器的 80 端口映射到主机的 808 端口.

第一个-v:挂载项目目录
第二个-v:挂载配置目录
第三个-v:挂载主配置文件
第四个-v:挂载日志目录
–like 这一步就是让nginx和php关联起来 目前还木有安装php 所以可以先注释

php和nginx类似随后补充

下载PHP7.3镜像
命令:docker pull php:7.3
因为同样要复制PHP的配置文件及日志文件,所以操作方法与mysql相同。复制出来的文件目录深度同样要退一层。
PHP的配置文件及日志文件目录地址:

配置文件:/usr/local/etc
日志文件:/usr/local/var/log
项目文件:/var/www/html  和nginx一样映射到同一个目录

随便启动一个,因为需要将php的配置文件和日志文件复制出来到本地

docker run -it --name php1 php:7.3-fpm
#cp docker 到本地
docker cp php1:/usr/local/etc E:\docker\Docker\php\php-conf
docker cp php1:/usr/local/var/log E:\docker\Docker\php\php-log
#docker cp php1:/var/www/html E:\docker\Docker\nginx\www<br>  php1:是我们前面运行的php的名称 这一步不需要 后期直接挂载和nginx同一挂载的文件即可

在这里插入图片描述
删除原有的php1,重新运行php 容器重命名最好带有版本标识。全命令:

docker run -d 
-v E:/docker/Docker/php/php-conf:/usr/local/etc 
-v E:/docker/Docker/php/php-log:/usr/local/var/log 
-v E:/docker/Docker/nginx/www:/var/www/html 
-p 9000:9000 
--name php1 
php:7.3-fpm

#上文nginx中–link提到的php1 就是php的名字 下面那个php是拉取的php加tag

容器创建完成之后,进入容器,docker exec -ti php1 sh (如果需要VIM,安装方法同mysql)
安装PHP的扩展 这写扩展可以放在最后面安装

命令1:docker-php-ext-install pdo_mysql
命令2:docker-php-ext-install mysqli
命令3:docker-php-ext-install bcmath
安装redis扩展
curl -L -o /tmp/redis.tar.gz https://codeload.github.com/phpredis/phpredis/tar.gz/5.0.2
root@803cbcf702a4:/# cd /tmp
root@517b9c67507a:/tmp# tar -xzf redis.tar.gz
root@517b9c67507a:/tmp# ls
phpredis-5.0.2	reids.tar.gz
root@517b9c67507a:/tmp# docker-php-source extract
root@517b9c67507a:/tmp# mv phpredis-5.0.2 /usr/src/php/ext/phpredis
#检查移过去的插件源码包是否存在
root@517b9c67507a:/tmp# ls -l /usr/src/php/ext | grep redis
drwxrwxr-x  6 root root  4096 Jul 29  2019 phpredis
root@517b9c67507a:/tmp# docker-php-ext-install phpredis

# 检查redis 扩展是否已经安装上
root@517b9c67507a:/tmp# php -m | grep redis
redis
root@517b9c67507a:/tmp#
###安装memcached
安装预编译环境
apt-get update -y && apt-get install -y pkg-config libmemcached-dev autoconf gcc make zlib1g zlib1g-dev vim
安装php-memcached扩展
pecl channel-update pecl.php.net && pecl install memcached
修改php的配置文件php.ini :/usr/local/etc/php/php.ini
这时候你的nginx+php是可以访问的 只需要输出phpinfo 就可以指定ini的目录
echo 'extension=memcached.so' >> /usr/local/etc/php/php.ini

在这里插入图片描述
在这里插入图片描述

查看扩展是否已经安装。php -m
在这里插入图片描述

#查看php镜像的ip地址

docker inspect --format='{{.NetworkSettings.IPAddress}}' php1

可以先配置启动php+nginx在去安装扩展 记住先启动php在启动nginx启动nginx时需要–like关联php
记住一点需要修改conf.d下的default.conf

server {
    listen       80;
    listen  [::]:80;
    server_name  localhost 127.0.0.1;

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

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

    #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
    #
    location ~ \.php$ {
        root   /var/www/html;  #php的目录  php启动的时候映射的目录是和nginx 映射的目录一直
        fastcgi_index  index.php;
        fastcgi_pass   php:9000;
        include        fastcgi_params;
        fastcgi_param   SCRIPT_FILENAME    $document_root$fastcgi_script_name;
    }

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

本能执行docker

docker run -d -v E:/docker/Docker/php/php-conf:/usr/local/etc -v E:/docker/Docker/php/php-log:/usr/local/var/log -v E:/docker/Docker/nginx/www:/var/www/html -p 9000:9000 --name php1 php:7.3-fpm
docker run -it -d -p 808:80 --name nginx1 -v E:/docker/Docker/nginx/www:/usr/share/nginx/html -v E:/docker/Docker/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v E:/docker/Docker/nginx/conf.d:/etc/nginx/conf.d -v E:/docker/Docker/nginx/logs:/var/log/nginx --link php1:php nginx
docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock --name prtainer-test 

**记得在

E:\docker\Docker\nginx\conf
创建一个nginx.conf
内容就是容器nginx内的nginx.conf
大致内容如下**


user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
   	
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

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

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;

    include /etc/nginx/conf.d/*.conf;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值