我现在所有的服务端都是基于Docker开发,所以在上线部署的时候也是使用Docker,最近对一个项目的服务端进行重构了下,要上新的服务器,这里就记录分享下整个过程。
安装Docker在Linux
我使用的服务器是Centos,可以直接YUM来安装,这也是Docker官网推荐安装方式:
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装完成后我们启动Docker服务:
systemctl start docker
systemctl start docker
之后运行下命令测试下:
sudo docker run hello-world
sudo docker run hello-world
安装Git
项目都是通过Git私有仓库同步的,所以需要安装下Git:
sudo yum install git
sudo yum install git
安装好后,发现并不能直接拉仓库的数据,因为还没授权,可以参考Git如何配置SSH这篇文章。
使用Docker脚本部署
现在Docker也有了,Git也有了,只要使用docker-compose文件,我们就能把服务起起来,比如说我们起一个MongoDB的服务,配置信息如下:
\# Use root/example as user/password credentials
version: '3.1'
services:
mongodb-main:
image: mongo
hostname: seozen-mongodb-main
restart: always
ports:
- 27018:27017
environment:
MONGO\_INITDB\_ROOT\_USERNAME: root
MONGO\_INITDB\_ROOT\_PASSWORD: root
volumes:
- /var/seozen/data/seozen-mongodb-main:/data/db/seozen-mongodb-main
networks:
- seozen-mongodb-main-network
networks:
seozen-mongodb-main-network:
name: seozen-mongodb-main-network
\# Use root/example as user/password credentials
version: '3.1'
services:
mongodb-main:
image: mongo
hostname: seozen-mongodb-main
restart: always
ports:
- 27018:27017
environment:
MONGO\_INITDB\_ROOT\_USERNAME: root
MONGO\_INITDB\_ROOT\_PASSWORD: root
volumes:
- /var/seozen/data/seozen-mongodb-main:/data/db/seozen-mongodb-main
networks:
- seozen-mongodb-main-network
networks:
seozen-mongodb-main-network:
name: seozen-mongodb-main-network
我们再创建一个脚本文件:
echo "\[deploy\]: start deploy......"
git pull
docker compose down
docker compose up --build -d
echo "\[deploy\]: deploye ended......"
echo "\[deploy\]: start deploy......"
git pull
docker compose down
docker compose up --build -d
echo "\[deploy\]: deploye ended......"
只要在服务器上运行:
sh deploy.sh
sh deploy.sh
就会自动帮你拉取文件,并重新部署拉,是不是很方便,用docker的好处就是可移植性很强,不用担心版本依赖不同的问题,只要一个配置文件,全部搞定,大家可以举一反三的使用哦。