• docker部署博客项目


    docker 部署博客项目

    发现很久没有写文章了,等我的博客完成,我应该也会继续写的

    1. 连接远程服务器

    ssh root@xxxxxx

    1. yum更新一下

    yum update

    用来解压zip压缩包

    yum install unzip

    安装相关的依赖

    yum install -y yum-utils device-mapper-persistent-data lvm2

    使用阿里镜像源

    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

    正式安装docker

    yum install docker-ce docker-ce-cli container.io

    docker启动服务

    systemctl start docker 启动

    systemctl enable docker 开机启动启动

    查看版本

    docker -v

    修改镜像源(踩过坑这个)

    rm -f /etc/docker 这一步很重要先删除

    mkdir -p /etc/docker 创建文件

    cd /etc/docker

    vim /etc/docker/daemon.json

    复制下面的代码修改为国内镜像

    {
    	"registry-mirrors": [
    	 "https://registry.docker-cn.com"
    	]
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5

    保存并退出

    重启服务和docker

    systemctl daemon-reload

    systemctl restart docker

    安装mysql

    docker pull daocloud.io/library/mysql:8.0.21

    docker images 查看安装的mysql镜像

    docker run -d -p 3306:3306 --name mysql -e MYSQL_ROOT_PASSWORD=abc123 mysql镜像id

    docker ps 查看运行的镜像和容器,会有mysql

    mysql这个容器会被运行起来

    docker exec -it 容器id sh 进入mysql容器内部

    mysql -uroot -p

    然后出入密码 abc123

    远程连接授权

    grant all privileges on *.* to root@‘%’ with grant option;

    flush privileges; 刷新权限

    ALTER USER ‘admin’@‘%’ IDENTIFIED WITH mysql_native_password BY ‘123456’; 更改密码

    flush privileges;

    exit 退出mysql

    exit 退出容器

    安装redis

    docker pull redis 拉取镜像

    docker run -di --name=redis -p 6379:6379 redis || 镜像id 运行镜像

    docker exec -it redis /bin/bash 进入redis这个容器

    docker exec -it 容器id sh 进入redis这个容器

    安装nginx

    docker pull nginx

    用于nginx映射文件使用的

    mkdir -p /home/nginx/conf
    mkdir -p /home/nginx/log
    mkdir -p /home/nginx/html

    运行这个容器

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

    将容器的nginx.conf文件复制到宿主机

    docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf

    docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d

    docker cp nginx:/usr/share/nginx/html /home/nginx/

    删除这个容器

    docker stop nginx

    docker rm nginx

    docker rm -f nginx 强制删除

    运行这个容器,并映射我们创建的文件目录

    docker run -p 80:80 --name nginx -v /home/nginx/conf/nginx.conf:/etc/nginx/nginx.conf -v /home/nginx/conf/conf.d:/etc/nginx/conf.d -v /home/nginx/log:/var/log/nginx -v /home/nginx/html:/usr/share/nginx/html -d nginx

    docker restart nginx 重启nginx

    存放前端代码

    将打包好的前端代码放入 /home/nginx/html 这个目录下

    后端项目,在根目录下,写Dockerfile 文件,写入下面代码, 安装node镜像,跑项目

    这里踩过坑, pm2 和 cross-env 这些插件属于开发环境,

    “prd”: “cross-env NODE_ENV=production pm2 start bin/www”, 错误写法

    “prd”: " start bin/www", 正确写法

    Dockerfile

    # 使用node镜像

    FROM daocloud.io/library/node:14.9.0

    # 在容器中新建目录文件夹 koa2

    RUN mkdir -p /koa2

    # 将 /koa2设置为默认工作目录

    WORKDIR /koa2

    # 将 package.json 复制默认工作目录

    COPY package.json /koa2/package.json

    # 安装依赖

    RUN yarn config set register https://registry.npm.taobao.org

    RUN yarn --production 只安装生产环境的依赖

    # 再copy代码至容器

    COPY ./ /koa2

    #3000端口

    EXPOSE 3000

    #等容器启动之后执行脚本

    CMD yarn prd

    把后端代码上传到服务器,打包 koa2.zip

    放到 /root/koa2.zip

    解压打包的文件

    unzip -u -d server koa2.zip

    docker运行后端代码 在根目录下运行

    docker build -t koa2:v1.0 ./server

    docker run -d -p 3000:3000 --name server 镜像id 运行容器

    我的node 跑起来的端口是 3000

    nginx配置 有配置history路由刷新,发送http请求的

    user  root;
    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  64;
    
        #gzip  on;
    
    server {
        listen 80;
        server_name 39.99.232.239;
        location / {
            root /usr/share/nginx/html;
            index index.html index.htm;
    		try_files $uri $uri/ /index.html;
        }
     	location ~ /api/ {
            proxy_pass http://39.99.232.239:3000;
        }
    }
        include /etc/nginx/conf.d/*.conf;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
  • 相关阅读:
    学信息系统项目管理师第4版系列24_整合管理
    Lnmp架构-Redis
    【计算机网络】常见的HTTP报文头部信息
    计算机竞赛 机器视觉opencv答题卡识别系统
    golang使用高阶函数优化业务功能
    c++视觉处理----分水岭算法
    csv文件用excel打开乱码
    设计模式01———简单工厂模式 c#
    分布式 PostgreSQL 集群(Citus)官方示例 - 时间序列数据
    Linux 进程通信深剖
  • 原文地址:https://blog.csdn.net/qq_43853213/article/details/126131554