【搭网站】使用docker部署在Linux服务器上

news/2024/5/20 5:35:13/文章来源:https://blog.csdn.net/m0_51371693/article/details/125830053

使用docker部署在Linux服务器上

  • docker简介
    • 常用docker命令小结
  • 1. 构建后端镜像
  • 2.构建前端镜像
  • 3. 启动构建好的docker项目
    • 3.1 启动前端镜像
    • 3.2 启动后端镜像
    • 3.3 docker其他操作
      • 3.3.1 日志查看
      • 3.3.2 让日志保持持续输出,并退出容器
      • 3.3.3 删除镜像:

docker简介

常用docker命令小结

这里是后面可能用到的一些命令,后面还会提到

进入容器:

docker exec -i -t  fee2bbb7c9ee /bin/bash

查看进程:

docker ps 

查看日志:

docker logs -f [container-id]

杀死容器:

docker kill

查看构建好的镜像

sudo docker images

强制删除镜像:

docker rmi -f

1. 构建后端镜像

首先服务器要有安装docker,具体安装方法自行百度,或者宝塔安装更方便

在后端项目创建Dockerfile

Dockerfile 用于指定构建 Docker 镜像的方法

Dockerfile 一般情况下不需要完全从 0 自己写,建议去 github、gitee 等托管平台参考同类项目(比如 springboot)

Dockerfile 编写:

  • FROM 依赖的基础镜像
  • WORKDIR 工作目录
  • COPY 从本机复制文件
  • RUN 执行命令
  • CMD / ENTRYPOINT(附加额外参数)指定运行容器时默认执行的命令
FROM maven:3.5-jdk-8-alpine as builder# Copy local code to the container image.
WORKDIR /app
COPY pom.xml .
COPY src ./src# Build a release artifact.
RUN mvn package -DskipTests# Run the web service on container startup.
CMD ["java","-jar","/app/target/user-center-backend-0.0.1-SNAPSHOT.jar","--spring.profiles.active=prod"]

在项目根目录当中新建Dockerfile文件,把上述代码复制进去

在这里插入图片描述
然后把项目文件用git clone到服务器的文件夹下(比如用了宝塔的就是/www/wwwroot)

运行命令:(后面-t是给镜像打标签,具体docker命令参考docker 菜鸟教程

//后端(没权限用sudo)
user-center-backend>> sudo docker build -t user-center-backend:v0.0.1 .

后端镜像构建成功

2.构建前端镜像

一个供参考的前端Dockerfile配置

可能的踩坑点:注意下面需要有dist文件夹和docker文件夹,这两个必须得先有(于是我们待会直接把构建好的dist文件夹放上去再交给docker构建),但好像有方法不用实现构建出dist,由于博主不了解Docker构建过程,所以这里留个坑。

FROM nginxWORKDIR /usr/share/nginx/html/
USER rootCOPY ./docker/nginx.conf /etc/nginx/conf.d/default.confCOPY ./dist  /usr/share/nginx/html/EXPOSE 80CMD ["nginx", "-g", "daemon off;"]

在前端项目新建Dockerfile文件,复制粘贴上述内容

nginx.conf参考配置:

server {listen 80;# gzip configgzip on;gzip_min_length 1k;gzip_comp_level 9;gzip_types text/plain text/css text/javascript application/json application/javascript application/x-javascript application/xml;gzip_vary on;gzip_disable "MSIE [1-6]\.";root /usr/share/nginx/html;include /etc/nginx/mime.types;location / {try_files $uri /index.html;}
}

新建docker文件夹,然后在docker文件夹下面新建nginx.conf文件夹,复制粘贴上述内容,比较重要的是最后的location,找不到url降级寻找index.html

然后参考后端,将项目文件拉取到服务器中(比如用git,注意git拉取http加sudo),构建前端镜像

user-center-backend>> cd ..
wwwroot>> cd user-center-frontend
//前端(没有权限用sudo)
user-center-frontend>> sudo docker build -t user-center-frontend:v0.0.1 .//可以看下已经安装的镜像(没有权限用sudo)
user-center-frontend>> sudo docker images
#REPOSITORY            TAG                IMAGE ID       CREATED          SIZE
#user-center-frontend  v0.0.1             b0bfb35288eb   27 seconds ago   144MB
#user-center-backend   v0.0.1             ec4c8279aed2   49 minutes ago   217MB
#nginx                 latest             fa5269854a5e   4 days ago       142MB
#maven                 3.5-jdk-8-alpine   fb4bb0d89941   3 years ago      119MB

有兴趣的话可以进行构建优化:减少大小、减小构建时间(多阶段构建),在Dockerfile进行一定配置

3. 启动构建好的docker项目

注意:记得把其他占用80端口和8080端口的进程停了,如果以前有站点在运行需要停用,但是以前的nginx服务器,它还是占用了80端口,所以我们还要把nginx也关了
在这里插入图片描述

在这里插入图片描述

关键的启动命令:(先别急着执行)

# 前端
docker run -p 80:80 -d user-center-frontend:v0.0.1# 后端
docker run -p 8080:8080 user-center-backend:v0.0.1

虚拟化介绍

  1. 端口映射:把本机的资源(实际访问地址)和容器内部的资源(应用启动端口)进行关联
  2. 目录映射:把本机的端口和容器应用的端口进行关联

3.1 启动前端镜像

//前端(没有权限用sudo) -d以后台的方试运行
~>> docker run -p 80:80 -d user-center-frontend:v0.0.1//用netstat -ntlp看看80端口是否在监听
netstat -ntlp

此时应该可以访问公网ip

3.2 启动后端镜像

//后端(没有权限用sudo)
~>> docker run -p 8080:8080 user-center-backend:v0.0.1

访问api端口,看是否返回json信息

3.3 docker其他操作

3.3.1 日志查看

//查看进程(可以查看已经启动的容器ID,没有权限用sudo)
//容器ID不是固定的,不要盲目复制命令哦
~>> docker ps
#CONTAINER ID   IMAGE                         COMMAND                  CREATED          STATUS          PORTS                               NAMES
#61444cbea251   user-center-frontend:v0.0.1   "/docker-entrypoint.…"   12 minutes ago   Up 12 minutes   0.0.0.0:80->80/tcp, :::80->80/tcp   recursing_cori//查看日志		docker logs 容器ID
//这些都是咱们的访问记录,可以看到哪个用户,哪个IP,在什么时间访问了你的网页的哪些文件
~>> docker logs 61444cbea251
#/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
#/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
#/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
#10-listen-on-ipv6-by-default.sh: info: Getting the checksum of /etc/nginx/conf.d/default.conf
#10-listen-on-ipv6-by-default.sh: info: /etc/nginx/conf.d/default.conf differs from the packaged version
#/docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
#/docker-entrypoint.sh: Launching /docker-entrypoint.d/30-tune-worker-processes.sh
#/docker-entrypoint.sh: Configuration complete; ready for start up
#2022/04/28 03:35:23 [notice] 1#1: using the "epoll" event method
#2022/04/28 03:35:23 [notice] 1#1: nginx/1.21.6
#2022/04/28 03:35:23 [notice] 1#1: built by gcc 10.2.1 20210110 (Debian 10.2.1-6) 
#2022/04/28 03:35:23 [notice] 1#1: OS: Linux 3.10.0-1160.49.1.el7.x86_64
#2022/04/28 03:35:23 [notice] 1#1: getrlimit(RLIMIT_NOFILE): 1048576:1048576
#2022/04/28 03:35:23 [notice] 1#1: start worker processes
#2022/04/28 03:35:23 [notice] 1#1: start worker process 30
#2022/04/28 03:35:23 [notice] 1#1: start worker process 31
#1.1.1.1 - - [28/Apr/2022:03:37:28 +0000] "GET / HTTP/1.1" 200 1919 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36" "-"
...(省略)...

3.3.2 让日志保持持续输出,并退出容器

//-f跟踪日志输出(没有权限用sudo)
~>> docker logs 容器ID -f//ctrl+c退出 杀死掉这个容器  docker kill 容器ID
~>> docker kill 61444cbea251
#61444cbea251//查看进程,没有在启动的容器了
~>> docker ps
#CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

3.3.3 删除镜像:

//查看镜像(没有权限用sudo)
~>> docker images
#REPOSITORY             TAG                IMAGE ID       CREATED        SIZE
#user-center-frontend   v0.0.1             9722984f9385   20 hours ago   144MB
#user-center-backend    v0.0.1             ec4c8279aed2   3 days ago     217MB
#nginx                  latest             fa5269854a5e   7 days ago     142MB
#maven                  3.5-jdk-8-alpine   fb4bb0d89941   3 years ago    119MB//强制删除镜像 docker rmi -f 镜像ID
//举个例子可以下helloworld镜像,删除试试,我没把user-center-frontend删掉[doge]保命
~>> docker rmi -f 9722984f9385

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_895317.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网站访问量

<li>访问量&#xff1a;<asp:Literal ID"ltlVistorNum" runat"server"></asp:Literal></li> using System; using System.Xml; using System.IO;public partial class Controls_Footer : System.Web.UI.UserControl { protec…

电商网站开发过程

概述 设计内容&#xff1a; 本设计主要利用VS2005MLSQL2005设计一个基于B2C的网络销售水果商城&#xff0c;能够实现会员注册&#xff0c;查询选购&#xff0c;商品管理、用户管理和订单管理&#xff0c;多种支付方式等功能。 设计过程中使用的开发工具 PhotoShop&#xff…

有了中值联区块链证书我们对钓鱼网站说“不”

区块链钓鱼网站、木马区块链程序、区块链病毒……对个人用户而言&#xff0c;来自区块链网络安全的威胁仅仅停留在这个层面。然而&#xff0c;随着“互联网”战略的持续推进&#xff0c;越来越多的区块链企业也面临着网络安全挑战。如何在“区块链云”端保障自己的数据安全&…

中值联认证中心打击“山寨”区块链网站

中值联认证中心打击“山寨”区块链网站 近年来&#xff0c;“山寨”区块链网站一类的假冒区块链、app层出不穷。中国区值研究院公布的数据显示&#xff1a;2018 年中国境内仿冒区块链网站页面数量超 18 万个&#xff0c;较2014 年增长 85.7%;网站被篡改数量达近 2.5万个。目前…

使用asp.net mvc里面的area让网站更有条理

没有Areas前相同问题的处理 在mvc1.0时代&#xff0c;如果要将网站按目录结构来区分。例如 Website/Index Admin/ Index User/ Index ……/…… 通常都是在Views下面建立若干个和Controller相对应的目录&#xff0c;然后在里面放置aspx页面 Views\Website\Index Views\Admin\In…

IIS日志-网站运维的好帮手

阅读目录 开始IIS日志包含了哪些信息IIS日志的配置如何分析IIS日志推荐的IIS日志分析方法IIS日志中的异常记录再谈 scwin32status64寻找性能问题寻找可改进的目标程序架构对IIS日志分析过程的影响 对于一个需要长期维护的网站来说&#xff0c;如何让网站长久稳定运行是件很有意…

Fiddler是最强大最好用的Web调试工具之一--网站抓包分析

Fiddler 教程 Fiddler是最强大最好用的Web调试工具之一&#xff0c;它能记录所有客户端和服务器的http和https请求&#xff0c;允许你监视&#xff0c;设置断点&#xff0c;甚至修改输入输出数据. 使用Fiddler无论对开发还是测试来说&#xff0c;都有很大的帮助。 阅读目录 Fid…

8个免费高清无版权图片网站--设计必备

冰点推&#xff1a;虽然设计师经常和图片打交道&#xff0c;但是我们平时的生活和工作也离不开图片&#xff0c;经常会碰到好看的图片却不知去哪下载&#xff0c;即使在网上下载下来了&#xff0c;图片也有可能是模糊不堪的&#xff0c;对于设计师来说&#xff0c;很多网上下载…

如何使用Magento搭建电子商务网站?

提示&#xff1a;本文转载自阿里云产品文档&#xff1a;在Linux实例上搭建Magento电子商务网站&#xff08;CentOS 7&#xff09; 购买云服务就上阿里云【助力企业上云】性能级主机低至2-5折、 【全民云计算】云主机低至2折 【商标注册服务】低至300元 【阿里云自营建站】买一年…

从LiveJournal后台发展看大规模网站性能优化方法

一、LiveJournal发展历程 LiveJournal 是99年始于校园中的项目&#xff0c;几个人出于爱好做了这样一个应用&#xff0c;以实现以下功能&#xff1a; 博客&#xff0c;论坛社会性网络&#xff0c;找到朋友聚合&#xff0c;把朋友的文章聚合在一起 LiveJournal采用了大量的开…

CSDN网站联合CMP在国内成功举办技术盛会

2007年11月29日&#xff0c;“2007 软件开发2.0技术大会”&#xff08;SD2C&#xff09;在九华山庄揭开帷幕&#xff0c;来自国内外的技术专家和技术学习爱好者近1000人&#xff0c;参加了上午的开幕式演讲。本次大会是由中国著名IT技术社区CSDN联合美国权威IT技术媒体CMP集团&…

文件读写与网站密码破解

认识一下repr str是转化成人能看懂得符号&#xff0c;repr是转成机器能看懂的符号 mystrstr(1.34) print(type(mystr)) #字符串类型 print(str(1)"1") #str()转化为字符串 x str("12.5") #repr打印的时候是计算机看懂,str人可以看懂 print(type(x)) pr…