下载的docker点击
登录阿里云找到镜像加速器把地址复制进去
开始安装nginx
docker search nginx
拉取官方的nginx
docker pull nginx
tips:系统会默认拉去最后一个nginx
查看镜像
docker images
docker run -d -p 8080:80 --name nginx1 nginx -d:后台运行 -p:设置端口号映射到本机,将 80 端口映射到本机的 8080 端口,外部访问8080端口即可 --name:设置容器名称
nginx的结构目录在容器中:
docker cp 容器名:/etc/nginx/nginx.conf E:\docker\Docker\nginx\conf\
docker cp nginx1:/etc/nginx/conf.d/default.conf E:\docker\Docker\nginx\conf.d\default.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
接下来是关键
创建目录 到指定目录 当初我创建的时候多写了一个docker 憨derder
/docker/nginx/nginx/conf /docker/nginx/nginx/conf.d /docker/nginx/nginx/html /docker/nginx/nginx/log
然后删掉停止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关联起来 目前第一步安装的nginx 所以可以先注释
下载PHP7.3镜像
··· a. 命令:docker pull php:7.3
··· b. 因为同样要复制PHP的配置文件及日志文件,所以操作方法与mysql相同。复制出来的文件目录深度同样要退一层。
··· c. PHP的配置文件及日志文件目录地址:
配置文件:/usr/local/etc 日志文件:/usr/local/var/log 项目文件:/var/www/html 和nginx 可以使用一个目录
因为PHP有可能要多版本切换,所以这里的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 #上文nginx中--link提到的php1 就是php的名字 下面那个php是拉取的php加tag php:7.3-fpm
容器创建完成之后,进入容器,docker exec -ti php71 /bin/bash (如果需要VIM,安装方法同mysql)
安装PHP的扩展
命令1:docker-php-ext-install pdo_mysql 命令2:docker-php-ext-install mysqli
查看扩展是否已经安装。php -m
#查看php镜像的ip地址
docker inspect --format='{{.NetworkSettings.IPAddress}}' php1
记住一点需要修改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; #} }