草庐IT

docker部署nginx并映射本地目录

飞天火狐狸92 2023-12-11 原文

你要有一定的nginx和docker基础

思路,将服务器的三个文件夹和nginx容器中的三个文件夹相对应上,其中难点在于conf目录。处理思路:1.随便起一个nginx容器;2.将容器中的配置文件复制到本地;3.删掉容器重建,并映射本地路径 。

目录

前提知识

准备原材料

先要有镜像

随便起个nginx容器

准备三个文件夹

启动容器

结果验证

后续拓展

参考连接


前提知识

容器内有三个路径可以映射,看自己选择要映射某一或几项:

1.静态资源:/usr/share/nginx/html,就是我们存放html,js文件的地方

2.配置文件:/etc/nginx,存放配置文件的地方,这个东西需要把容器里的复制出来

3.日志文件:/var/log/nginx,存放日志的地方

准备原材料

先要有镜像

docker pull nginx

随便起个nginx容器

容器名字姑且叫nginx00,姑且用9004指向容器内的80,这些参数都随意

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

容器启动后,可以看看服务器的9004端口是否嫩访问到nginx,如果能正常访问就没问题,如果不行,自行解决吧

准备三个文件夹

因为我是要将本地的/home/docker/nginx路径做映射,所以cd到路径下执行

docker container cp nginx00:/etc/nginx .

执行后,本地多了个nginx文件夹,将其改名叫conf

mv nginx conf

将另外两个需要映射的文件夹

mkdir html
mkdir logs

在html路径下,自己vi写个test.html。内容随意,命令自行解决。

这时,你已经准备完毕原材料

启动容器

先把原来的容器铲除掉

docker stop nginx00 #停止
docker rm nginx01 #删除
docker ps -a #看看是不是没了

建新的容器,起名nginx01,还用9004端口,三个路径都映射。

#二者选择一个执行即可
#一行版本
docker run -d -p 9004:80 --name nginx01 -v /home/docker/nginx/html:/usr/share/nginx/html -v /home/docker/nginx/conf:/etc/nginx -v /home/docker/nginx/logs:/var/log/nginx nginx

#折行版本
docker run -d -p 9004:80 --name nginx01 \
-v /home/docker/nginx/html:/usr/share/nginx/html \
-v /home/docker/nginx/conf:/etc/nginx \
-v /home/docker/nginx/logs:/var/log/nginx \
nginx

结果验证

后续拓展

如果nginx.conf变化了,该如何reload这个conf文件,莫非只能重启或者重建容器么?目前还没找到好方法。欢迎留言指导~

参考连接

本文主要用于自己的学习记录,其实大家也都能从网上找到,特别感谢这几篇文章

centos7下使用docker安装nginx

docker安装Nginx,映射本地文件

dockerhub nginx官方文档

有关docker部署nginx并映射本地目录的更多相关文章

  1. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  2. ruby-on-rails - 如何优雅地重启 thin + nginx? - 2

    我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server

  3. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

    我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

  4. ruby-on-rails - 每次我尝试部署时,我都会得到 - (gcloud.preview.app.deploy) 错误响应 : [4] DEADLINE_EXCEEDED - 2

    我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie

  5. ruby - 是否可以覆盖 gemfile 进行本地开发? - 2

    我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI

  6. ruby-on-rails - 如何在 Gem 中获取 Rails 应用程序的根目录 - 2

    是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在

  7. ruby-on-rails - Ruby on Rails 可以部署在 Azure 网站上吗? - 2

    我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/

  8. Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting - 2

    1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里

  9. jenkins部署1--jenkins+gitee持续集成 - 2

    前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon

  10. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

随机推荐