寫個網站吧! --Flask+Vue.js+MySQL+Docker(5)--docker部署

前情回顧:寫個網站吧! --Flask+Vue.js+MySQL+Docker(1)--簡介

到了最煩人最煩人的部署階段,先簡單畫一個我的思路的圖:

思路就是兩個docker容器,一個佈置前端,一個佈置後端,最後使用nginx對請求進行解析,以分別解析到對應的端口。可以說是很清晰很簡單了,然而!最令人絕望的階段開始了。

前端

首先寫個nginx的配置文件:

server {
    listen 80;

    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}

內容很簡單,監聽80端口,定位我們需要的index.html。然後打包前端,Dockerfile如下:

FROM nginx:alpine

COPY ./nginx.conf /etc/nginx/conf.d/default.conf
COPY ./dist /usr/share/nginx/html

基礎鏡像是nginx的alpine版本,這裏把npm build生成的文件還有nginx配置文件放到對應的位置即可。

整個過程很流暢,沒什麼需要注意的,直接就行。注意要把dist文件夾轉移到Dockerfile同級。

後端

嘗試了幾種方法之後,我選擇了alpine的基礎上安裝python作爲基礎鏡像:

FROM alpine:latest
RUN apk add --no-cache python3-dev\
    &&pip3 install --upgrade pip
WORKDIR /app
COPY . /app
RUN pip3 --no-cache-dir install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple
EXPOSE 5000
CMD gunicorn -w 4 -b 0.0.0.0:5000 app:app

其中的曲折也不多說了,這樣的話我嘗試起來是最好的。

因爲只是API,所以也沒有使用nginx做反向代理,當然加上是更好的。

調度Nginx

文件內容如下:

server {                                                                       
    listen 80;
    server_name example.com;

    location / {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;               proxy_pass http://127.0.0.1:3001;
    }

    location /api {
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;               proxy_pass http://127.0.0.1:3002;
    }
}

因爲我的域名備案還沒下來,這裏的配置有沒有問題我還不知道,如果有問題我再更新這部分內容並補充。

部署

這裏使用的是阿里的容器鏡像服務,簡單好用還是私有的。

當然使用dockerhub也是可以的。

具體使用不多說了,寫的很清楚了。設私有倉庫的密碼然後在本地登陸,隨後即可推鏡像了。

因爲一些生產環境和開發環境不一樣產生的問題再前文已經講過了,所以剩下的坑也不是很多了。

這裏我使用的部署方式是portainer.io, Github地址。

使用非常方便,大家可以看文檔,編輯docker-compose的話也是在線的編輯器:

大家如果也是使用私有倉庫的話別忘了先設置倉庫地址和密碼。

docker-compose不熟悉的可以去查閱文檔,這裏可以看出因爲MySQL沒用開鏡像,這裏的文件都比較簡單。

整個流程就是這樣的,最後說一個很奇怪的BUG

BUG

簡單的說是,在我本機上的鏡像,可以成功運行,但是在雲服務器上就是會出錯,顯示的:

o.indexof不是一個合理的方法

看起來似乎是element的錯誤,不禁想發問,同一個鏡像爲什麼會隨着主機而改變了呢。

這個問題困擾了我很久,即使重新佈置也是有錯誤的。

巧的是今天中午排除了各種錯誤之後,我又重新部署了一編,竟然又沒有錯誤了。。

很無語。。。

現在還是很無語。。。

未來的事:

docker的知識一定是要繼續學習的,這個東西太好用了。。。

未來再寫我的網站的內容,希望自己已經有底氣去面對工作了,加油,明天。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章