使用docker部署nginx

本文介绍了如何使用Docker部署Nginx,包括检查和下载Nginx镜像,创建并启动容器,以及通过端口映射实现外部访问。步骤详细,适合Docker初学者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基本思路:先下载nginx镜像,然后创建nginx容器,再进入容器对配置进行设置

docker的基本命令前面帖子中有整理,可以参考查看

docker的常用命令(镜像、容器常用操作)_的博客-优快云博客每次学习docker,都会因为docker的命令太多苦恼,经常记不住,有时候去官网查一下,有时候在网上找一些帖子,特别麻烦,以下是对一些常用的命令的用法做了一些归纳和说明,当然,以后如果使用的多了,肯定就都记住了,这个帖子也就没什么意义了;不过它还会适合初学docker现阶段的我这个阶段的你。一、帮助命令docker version #显示docker的版本信息docker info #查看docker的系统信息,包括镜像和容器…[这里是图片001]https://blog.youkuaiyun.com/rengn/article/details/123515069

1、查看是否有nginx镜像

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
centos       latest    5d0da3dc9764   6 months ago   231MB

2、如果docker中无nginx镜像,下载镜像

我们这儿直接下载最新版本

[root@localhost ~]# docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
a2abf6c4d29d: Pull complete 
a9edb18cadd1: Pull complete 
589b7251471a: Pull complete 
186b1aaa4aa6: Pull complete 
b4df32aa5a72: Pull complete 
a0bcbecc962e: Pull complete 
Digest: sha256:0d17b565c37bcbd895e9d92315a05c1c3c9a29f762b011a10c54a66cd53c9b31
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

3、启动创建nginx容器

启动命令:docker run -d --name ce-nginx155 -p 3344:80 nginx

# -d 后台运行

# --name 容器命名

# -p 宿主机端口:容器内部端口(文章末尾 有关于端口映射的详细讲解)

[root@localhost ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
nginx        latest    605c77e624dd   2 months ago   141MB
centos       latest    5d0da3dc9764   6 months ago   231MB
[root@localhost ~]# docker run -d --name ce-nginx155 -p 3344:80 nginx
971dd8810da2b1099aba5545c110878d4000289b5262d3df4f04c6b114743ae9
[root@localhost ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                                   NAMES
971dd8810da2   nginx     "/docker-entrypoint.…"   14 seconds ago   Up 13 seconds   0.0.0.0:3344->80/tcp, :::3344->80/tcp   ce-nginx155
[root@localhost ~]# curl 127.0.0.1:3344

访问验证:使用外部端口3344可以访问该容器nginx

4、进入容器,可以对相关配置进行设置

[root@localhost ~]# docker exec -it ce-nginx155 /bin/bash
root@971dd8810da2:/# ll
bash: ll: command not found
root@971dd8810da2:/# ls
bin  boot  dev  docker-entrypoint.d  docker-entrypoint.sh  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@971dd8810da2:/# whereis nginx
nginx: /usr/sbin/nginx /usr/lib/nginx /etc/nginx /usr/share/nginx
root@971dd8810da2:/# cd /etc/nginx/

root@971dd8810da2:/etc/nginx# ls
conf.d  fastcgi_params  mime.types  modules  nginx.conf  scgi_params  uwsgi_params

ps:端口映射暴露原理

容器nginx01和nginx02分别是独立的容器,也是绝对隔离的,容器内的端口使用是互不影响的,但是所开放的端口如果需要被外部访问,需要配置对外的映射规则

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

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

如图所示,访问服务器宿主机防火墙的端口3344和3355会分别映射到nginx01和nginx02两个不同的容器中。

先自我介绍一下,小编13年上师交大毕业,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。深知大多数初中级java工程师,想要升技能,往往是需要自己摸索成长或是报班学习,但对于培训机构动则近万元的学费,着实压力不小。自己不成体系的自学效率很低又漫长,而且容易碰到天花板技术停止不前。因此我收集了一份《java开发全套学习资料》送给大家,初衷也很简单,就是希望帮助到想自学又不知道该从何学起的朋友,同时减轻大家的负担。添加下方名片,即可获取全套学习资料哦

<think>好的,我现在需要回答用户关于如何使用Docker部署包含Vue项目的Nginx容器的问题。首先,我得整理一下用户提供的引用内容,看看有哪些步骤和配置可以参考。用户引用了多个不同的Docker部署方法,每个引用中的命令略有不同,比如挂载目录、端口映射等。我需要将这些信息综合起来,形成一个清晰的教程。 首先,用户的需求很明确:使用Docker部署Nginx运行Vue项目。所以步骤应该包括Vue项目的构建、Dockerfile的编写、Nginx配置文件的准备,以及运行容器。用户提供的引用中有几个关键点: 1. 构建Vue项目成dist文件夹,这是部署的前提。 2. 创建Dockerfile,使用nginx镜像,复制dist文件和配置文件。 3. 配置Nginx,可能需要修改默认配置,比如处理路由问题。 4. 使用docker build构建镜像,然后运行容器,注意端口映射和卷挂载。 接下来,我需要确保每个步骤都正确,并且符合最佳实践。例如,在Dockerfile中删除默认配置,替换为自己的配置,这样可以避免冲突。同时,挂载配置文件或目录时,用户可能有不同的路径,需要说明清楚如何调整路径。 另外,用户提供的引用中有不同的挂载方式,有的是在构建时复制文件,有的是在运行时挂载卷。这里需要区分两者的使用场景。构建时复制适合将静态文件打包进镜像,而运行时挂载适合动态修改配置或内容。根据用户的问题,可能更推荐构建时将dist文件打包到镜像中,这样镜像更自包含,而Nginx配置可以通过挂载或在构建时添加。 还需要考虑Nginx的配置是否正确,特别是处理Vue的路由模式(history模式)可能需要额外的配置,避免出现404错误。引用中的例子可能没有详细说明这点,可能需要补充。 然后,生成相关问题部分,需要根据教程内容提出几个相关问题,比如优化镜像大小、处理路由问题、多环境配置等。 最后,确保整个回答结构清晰,步骤明确,代码块正确,符合用户的中文要求,并且正确引用提供的参考资料。需要注意用户提到的引用并不是直接相关,但需要参考他们的命令结构,比如如何编写Dockerfile和docker run命令。</think>### 使用Docker部署Nginx运行Vue项目分步教程 #### 一、准备工作 1. **构建Vue项目** 在项目根目录执行以下命令生成静态文件: ```bash npm run build ``` 生成`dist`文件夹(包含编译后的HTML/CSS/JS文件)[^1]。 2. **创建Nginx配置文件** 新建`default.conf`文件,配置内容如下(重点处理Vue路由模式): ```nginx server { listen 80; server_name localhost; location / { root /usr/share/nginx/html; index index.html; try_files $uri $uri/ /index.html; # 解决history模式路由问题 } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } } ``` --- #### 二、编写Docker镜像构建文件 创建`Dockerfile`(无文件扩展名),内容如下: ```dockerfile # 使用官方nginx镜像 FROM nginx:alpine # 删除默认配置 RUN rm /etc/nginx/conf.d/default.conf # 复制自定义配置 COPY default.conf /etc/nginx/conf.d/ # 将Vue编译文件添加到镜像 COPY dist/ /usr/share/nginx/html/ # 暴露80端口 EXPOSE 80 ``` *说明:使用`nginx:alpine`镜像可减小体积[^1][^5]。* --- #### 三、构建与运行容器 1. **构建镜像** 在`Dockerfile`同级目录执行: ```bash docker build -t vue-nginx . ``` 2. **运行容器** ```bash docker run -d --name vue-app -p 8080:80 vue-nginx ``` *参数说明:* - `-d`:后台运行 - `-p 8080:80`:将宿主机8080端口映射到容器80端口 - `--name`:指定容器名称[^1][^4] --- #### 四、验证部署 访问`http://宿主机IP:8080`,若显示Vue应用即成功。通过以下命令查看日志: ```bash docker logs vue-app ``` --- #### 五、高级配置(可选) 1. **挂载本地目录** 修改运行命令实现配置热更新: ```bash docker run -d \ -p 8080:80 \ -v $(pwd)/dist:/usr/share/nginx/html \ -v $(pwd)/default.conf:/etc/nginx/conf.d/default.conf \ --name vue-app \ nginx:alpine ``` *说明:适合开发环境调试[^2][^4]。* 2. **多阶段构建优化** 在`Dockerfile`中集成构建过程: ```dockerfile # 构建阶段 FROM node:16 as build-stage WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build # 生产阶段 FROM nginx:alpine COPY --from=build-stage /app/dist /usr/share/nginx/html COPY default.conf /etc/nginx/conf.d/ ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值