一.准备好一台服务器 云上的可以 公司的也可以 我这里使用的是centos
避免docker版本老的以及传到Docker-Hub上出错问题,运行如下代码
#升级yum
sudo yum update
#卸载旧版本docker
sudo yum remove docker docker-common docker-selinux docker-engine
#安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#设置源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sudo yum makecache fast
#安装docker
sudo yum install docker-ce
#启动服务
sudo systemctl start docker
# docker pull nginx
1.将我们的前端项目在根目录打包
2.打包成功后会生成一个 dist文件夹,dist文件夹就是我们打包好的前端项目
3.将打包好的前端项目 dist文件放到在服务新建的文件夹里
4.Dockerfile文件如下 复制就可
FROM nginx
MAINTAINER zouzou
RUN rm /etc/nginx/conf.d/default.conf
ADD default.conf /etc/nginx/conf.d/
COPY dist/ /usr/share/nginx/html/
5.default.conf文件如下 复制修改ip即可
server {
listen 80;
server_name 112.124.2.201; # 修改为docker服务宿主机的ip
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html =404;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
6.最后在我们的根目录执行下列命令,将前端程序打包为docker镜像
docker build -t 镜像名称 .
二.后端程序分为四步
1.将我们用到的包打包自动生成requirements文件
# 使用pipreqs的好处就是只会生成当前项目使用到的第三方类库的requirements文件。
pip install pipreqs
# 在项目根路径使用 避免中文乱码
pipreqs ./ --encoding='utf-8'
2.编写Dockerfile
# 指定版本
FROM python:3.7
# 项目目录
WORKDIR /renren_python
COPY requirements.txt ./
RUN pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
COPY . .
ENV LANG C.UTF-8
# main 为我们的主函数入口
CMD ["gunicorn", "main:app","-c","./gunicorn.conf.py"]
3.编写 gunicorn.conf.py
第三行指定端口 0.0.0.0为全部 不要写127.0.0.1或者localhost
workers = 3 # 进程数
worker_class = "gevent" # 异步模式
bind = "0.0.0.0:5000"
最后 我们在根目录将后端程序打包为镜像
docker build -t 镜像名字 .
后端整体目录如下
这是我们打包好的前后端镜像
# 后端启动
docker run -d -p 5000:5000 flask
# 前端启动
docker run -d -p 8080:80 vvv
我们在浏览器自己的ip端口就可以访问
三. 我们可以把我们打包好的文件上传到Docker-Hub上面
将自制的镜像上传至 docker 仓库; https://hub.docker.com/
1.准备账户
登录到 docker hub 创建官网创建账户, 登录后点击 settings 完善账户信息,填写账户基本信息
2. 在服务器上 输入自己的账户等
docker login
上面图所示代表成功
3. 查看镜像
这是我的前后端两个镜像
4 给镜像做 tag 并开始上传
docker tag 镜像 用户名/名字:版本
docker push 用户名/名字:版本
5. 打开官网看到我们上传的镜像
我们要将镜像拉取的话
docker pull 用户名/名字