2023-10-17
docker的好处是创建一个完全隔离的空间,所以依赖项不会互相冲突,今天就来试一下吧。
sudo apt update
sudo apt install docker.io
开始docker并设置开机自启动
sudo systemctl start docker
sudo systemctl enable docker
现在可以试下
docker container run hello-world
在项目的根目录添加Dockerfile,注意项目里面要用到的文件需要COPY进这个文件里面,最终Dockerfile是这样的
FROM python:3.8-slim
WORKDIR /app
COPY requirements.txt requirements.txt
RUN pip install --no-cache-dir -r requirements.txt
# 在Dockerfile中添加Pandas安装命令
RUN pip install pandas
RUN pip install gunicorn
COPY index.py /app/
COPY .env .env
COPY commonlearner.com.pem .
COPY commonlearner.com.key .
#CMD ["python", "index.py"]
CMD ["gunicorn", "--certfile", "commonlearner.com.pem","--keyfile", "commonlearner.com.key", "-b", "0.0.0.0:5328", "-w", "4","index:app"]
注意:
以上requirements.txt里面的pandas发生错误,所以单独install
gunicorn用来转为https命令的,vercel的后端仅接受https传输数据
index.py需要传入app文件夹,证书也有在根目录内,COPY进Dockerfile
最后运行gunicorn指令运行python后端。
如果你是http请求,非vercel程序,可以用CMD[“python”, “index.py”]命令
docker build -t server-autism /root/server-autism
代码解释:
docker run -d -p 5328:5328 server-autism
代码解释:
docker ps
docker ps -a
docker stop [id]
docker rm [id]
docker ps -a | grep server-autism
docker images
docker images -a #包含中间images
docker rmi server-autism
docker image prune
docker image prune -a #删除所有未使用的image
docker logs [id]
同样,在根目录下添加Dockerfile
touch Dockerfile
vim Dockerfile
Dockerfile里面内容:
FROM node:16-slim
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
CMD ["npm", "run", "start"]
注意,放入Dockerfile之前,我已经执行过npm run build了,如果没有执行,应该要在Dockerfile重新执行一次。
执行Docker build container 和 run 的动作:
docker build -t terminal-blog-nomodule . #在本文件夹下
docker build -t terminal-blog-nomodule /root/terminal-blog-nomodule
docker run -d -p 3000:3000 terminal-blog-nomodule
查看哪些应用在运行
docker ps #查看当前运行的应用
docker ps -a #查看退出的应用
查看结果
root@iZj6cbu3y55famglsids2zZ:~# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
root@iZj6cbu3y55famglsids2zZ:~# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9729682ea764 terminal-b "docker-entrypoint.s…" 12 days ago Exited (1) 28 hours ago compassionate_bose
c4ffe60c6f1f server-a "gunicorn --certfile…" 13 days ago Exited (0) 28 hours ago ecstatic_tharp
33b47e589667 71fd1256c003 "docker-entrypoint.s…" 13 days ago Created hopeful_khorana
8349468a3c6e 71fd1256c003 "docker-entrypoint.s…" 13 days ago Created focused_aryabhata
3bc316876340 server-autism "gunicorn --certfile…" 13 days ago Exited (0) 13 days ago optimistic_einstein
重新开始应用
docker start compassionate_bose
docker start ecstatic_tharp
这里,我们使用了容器的名称(如 compassionate_bose 和 ecstatic_tharp)来启动它们。你也可以使用容器的ID来达到同样的效果。