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"
	]
}

保存并退出

重启服务和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;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值