Raspberry Pi在docker nginx上部署blog
之前仅在树莓派上安装nginx并部署了blog,但是如果nginx的配置有问题或者出现错误不方便解决(所有东西都在一台主机上)。
现在使用docker容器来部署nginx,如果配置错误可以删除容器推到重来,还可以部署多个服务,非常的便利
部署之前先停止已经运行的nginx
$ sudo nginx -s stop
安装Docker
这里不要直接用apt,apt里默认的包是docker的GUI版本
这里直接使用官网的安装脚本,其他的安装方式参见Docker官网手册
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh
查看docker版本
$docker -v
Docker version 20.10.10, build b485636
默认docker需要root权限运行,想要以非root命令运行可以参考docker安装
设置docker开机自启并启动docker
$ systemctl start docker
$ systemctl enable docker
获取镜像
镜像加速
此处使用网易云镜像服务:https://hub-mirror.c.163.com
请首先执行以下命令,查看是否在 docker.service
文件中配置过镜像地址
$ systemctl cat docker | grep '\-\-registry\-mirror'
如果该命令有输出,那么请执行 $ systemctl cat docker
查看 ExecStart=
出现的位置,修改对应的文件内容去掉 --registry-mirror
参数及其值,并按接下来的步骤进行配置。
如果以上命令没有任何输出,那么就可以在 /etc/docker/daemon.json
中写入如下内容(如果文件不存在请新建该文件):
{
"registry-mirrors": [
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com"
]
}
之后重新启动服务:
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
获取Nginx官方镜像
$ sudo docker pull nginx
查看镜像:
$ sudo docker images
部署nginx
启动容器:
$ sudo docker container run \
-d \
--rm \
-p 8897:80 \
--name mynginx \
nginx
查看是否启动成功
$ sudo docker ps
进入之前在本机部署的nginx资源文件夹~/nginx
,文件结构如下(之前部署时资源已经放在/app/blog/dist
):
nginx
├── app
│ └── blog
│ └── dist
└── logs
复制nginx配置目录:
$ sudo docker container cp mynginx:/etc/nginx .
更改目录名:
$ mv nginx conf
停止之前启动的容器,停止后会被自动删除(--rm
的作用):
$ sudo docker stop mynginx
启动nginx:
$ sudo docker run \
-d \
-p 80:80 \
--name my-nginx \
-v /home/pi/nginx/app/blog/dist:/usr/share//nginx/html \
-v /home/pi/nginx/logs:/var/log/nginx \
-v /home/pi/nginx/conf:/etc/nginx \
nginx
查看是否启动成功:
$ sudo docker ps
现在直接在浏览器访问树莓派的ip,可以直接进入blog首页了
本文采用CC BY-NC-ND 4.0进行许可
参考
Install Docker Engine on Debian docker manuals
Docker 部署 vue 项目 稀土掘金
Docker 部署Nginx 今朝のブログ
docker command not found even though installed with apt-get stackoverflow