Docker部署Golang+Gin和Python+Tornado后端和NodeJS+Web框架

一、检查CentOS系统

查看linux的系统是否是CentOS
cat /etc/redhat-release

查看硬盘以GB的方式显示
df -h

查看CPU相关信息
lscpu
cat /proc/cpuinfo

查看CPU核数
echo "Threads/core: $(nproc --all)"

查看Memory大小
cat /proc/meminfo
free



二、安装Docker到你的CentOS上

参见教程:https://docs.docker.com/engine/install/centos/

简单总结到以下四步骤

 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-compose-plugin

sudo systemctl start docker

试运行docker
sudo docker run hello-world



三、部署Golang + Gin

1.切换到项目根目录

cd ../project1

2.添加Dockerfile文件,内容如下

FROM golang:alpine

RUN mkdir -p /home/project1
WORKDIR /home/project1
COPY ./ /home/project1

RUN export GOPROXY=https://proxy.golang.com.cn,direct
RUN go build -o /home/project1 main.go diagnostics.go

ENTRYPOINT [ "/home/project1", "-c", "/home/project1/conf/test.yaml" ]

这里使用的是golang 1.18版本,而golang:alpine是golang推断专门为docker准备镜像包

3.编译项目

docker build -t project1 .

4.给这个镜像打一个tag

docker tag project1 my/project1:v1.0

5.将tag推到docker hub

docker push my/project1:v1.0

然后你将在https://hub.docker.com/repository 看到你的项目,前提是你已经注册了账户

6.登录到你的CentOS

前提是,你的服务器已安装docker环境,并且docker已处于运行状态,然后运行以下命令:
docker run -itd --name my/project1 -p 9190:9190

此时服务器上还没有这个my/project1的镜像,则会自动去docker hub上下载

7.访问刚搭建的docker镜像

curl http://localhost:9190



四、部署Python + Tornado

1.切换到项目根目录

cd ../project2

2.添加Dockerfile文件,内容如下

FROM python:3.9.13

EXPOSE 9180

RUN mkdir -p /home/project2
WORKDIR /home/project2
COPY ./ /home/project2

COPY requirements.txt /home/znzpay
RUN pip3 install --no-cache-dir -r requirements.txt

ENTRYPOINT ["python3", "main.py"]

这里把项目中的依赖库导出到requirements.txt里,通过以下命令
pip freeze -> requirements.txt

3.编译打包项目

docker build -t project2 .

4.给这个镜像打一个tag

docker tag project2 my/project2:1.0

5.将tag推到docker hub

docker push my/project2:1.0

然后你将在https://hub.docker.com/repository 看到你的项目,前提是你已经注册了账户

6.登录到你的CentOS

前提是,你的服务器已安装docker环境,并且docker已处于运行状态,然后运行以下命令:
docker run -p 9180:9180 --name my/project2 -itd my/project2:1.0
或者
docker run -itd my/project2

此时服务器上还没有这个my/project2的镜像,则会自动去docker hub上下载

如果是已存在的镜像,要进行更新时,则运行以下命令
docker pull my/project2:1.0 1.0表示tag版本号,要更新到1.0版本

当镜像更新后,将其运行起来,如果该镜像的container已存在,则重启或者删除
以下命令是,启动一个镜像,以容器方式运行

docker run --name my/project1.1 -itd my/project:1.1

参数–name 后面是自定义的昵称
参数-itd 后面的是镜像名称,其中d表示detached后台运行

7.访问刚搭建的docker镜像

curl http://localhost:9180

删除镜像
docker image remove <id>

删除container
docker rm <id>

停止container
docker stop <id>

查看日志
docker logs <container id>



五、部署NodeJS + 任意Web框架

1.切换到项目根目录

cd project3

2.添加Dockerfile文件,内容如下

FROM node:16-alpine

EXPOSE 9200

RUN mkdir -p /home/project3
WORKDIR /home/project3
COPY ./dist /home/project3

COPY package.json package-lock.json /home/project3/
RUN npm install

ENTRYPOINT ["node", "main.js"]

3.从Dockerfile启用一个image镜像

编译镜像
docker build -t project3 .
启动容器
docker run --name project3 -d -p 9200:9200 project3

4.查看运行情况

查看镜像运行情况
docker images
查看容器运行情况(只看正在运行的container)
docker container list
查看所有容器(正在运行的、停止的、意外终止的)
docker container ls -a



六、Docker之间共享数据 - volume

Docker的container之间是完全隔离状态,因此每次更新image时,再启动container,则之前保存到container内部的文件数据会丢失,因此我们可以通过volume来共享数据,

1.创建volume

docker volume create test_data_volume

2.可以查看volume

docker volume spect test_data_volume

3.启动Container时,挂载此volume

docker run --name project_tag -d -p 8888:8888 project_tag --mount source=test_data_volume,target=/home

挂载volume时,指定目录,比如这里是/home表示在Container里的home下。

那么你的后台程序就可以根据此路径读取,例如:
File.read("/home/userdata.json") 而userdata.json就是你想存储数据的文件

Start a container with a volume 传送门





资源:

1.Docker Hub: https://hub.docker.com
2.Docker安装:https://docs.docker.com/engine/install/centos/
3.Golang环境
2.Python环境

猜你喜欢

转载自blog.csdn.net/u013538542/article/details/125984216