您好,登錄后才能下訂單哦!
本篇文章為大家展示了如何在docker中部署crownblog項目,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
找到.env.production 修改為自己的ip或者域名地址
執行命令npm run build生成dist文件
把dist文件拷貝到后端項目目錄下(使用go自帶的http服務來部署前端項目)
購買阿里云服務器
打開服務器的8085和3306端口
使用Xshell登陸服務器
官方文檔: docs.docker.com/get-docker/
選擇對應的系統進行查看,以ubuntu 18.04 LTS為例
卸載舊版本
sudo apt-get remove docker docker-engine docker.io containerd runc Reading package lists... Done Building dependency tree Reading state information... Done Package 'docker-engine' is not installed, so not removed Package 'docker' is not installed, so not removed Package 'containerd' is not installed, so not removed Package 'docker.io' is not installed, so not removed Package 'runc' is not installed, so not removed 0 upgraded, 0 newly installed, 0 to remove and 3 not upgraded.
添加新版本倉庫
sudo apt-get update udo apt-get install \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common
獲取官方GPG key
# curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
驗證key,如果輸出的是下列內容,則說明正確
# apt-key fingerprint 0EBFCD88 pub rsa4096 2017-02-22 [SCEA] 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 uid [ unknown] Docker Release (CE deb) <docker@docker.com> sub rsa4096 2017-02-22 [S]
添加倉庫地址(用國內的倉庫下載,速度較快)
$ sudo add-apt-repository \ "deb [arch=amd64] https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/ \ $(lsb_release -cs) \ stable"
更新倉庫和安裝
$ sudo apt-get update $ sudo apt-get install docker-ce docker-ce-cli containerd.io
進行驗證,運行hello-world
$ docker pull hello-world $ docker run hello-world #出現以下信息,表示docker安裝成功,已經可以正常運行 Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/
使用阿里鏡像站來加速
地址:mirrors.aliyun.com/
sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://XXX你的id.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker
Mysql服務器的鏡像
首先,個人非常不建議mysql用docker來部署,有幾個原因:
必須做數據卷的映射,千萬不能 將數據庫數據放在docker容器中運行,否則一但刪除容器數據將全部清空,所以一定要做數據持久化!!;
不利于io,數據讀寫在容器中讀寫一次,在綁定的卷中還要讀寫一次,兩倍讀寫壓力,性能上要打折扣。
如果非要在docker上部署mysql,可以這么做
#首先確定mysql是否能被搜素到,這步可以跳過,也可以在dockerhub.com中搜索 docker search mysql #拉取鏡像 docker pull mysql #這里默認是拉取的最新版本,如果需要特定版本可以在鏡像后面添加tag,具體版本信息可以在dockerhub.com查詢 #特定版本拉取,比如要拉取8.0.22(版本號一定要是官方放出的版本號,否則是查找不到的) docker pull mysql:8.0.22 #這時可以查看下拉取的鏡像 docker images #運行鏡像 docker run -d -p 3306:3306 -v /crownBlog/datadir:/var/lib/mysql --name crownBlog-mysql -e MYSQL_ROOT_PASSWORD=123456 mysql # -d 表示后臺運行,并返回容器id # -p 3006:3306 表示端口映射,具體為 -p 主機端口:容器端口 # --name 給容器取個名字 # -e MYSQL_ROOT_PASSWORD=password 給mysql root管理員設置密碼 # -v /crownBlog/datadir:/var/lib/mysql 添加數據卷 /crownBlog/datadir是主機的數據庫路徑 /var/lib/mysql是容器中的數據庫路徑,這一步非常重要 #進入容器配置 docker exec -it crownBlog-mysql bash root@ed9345077e02:/# mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 8 Server version: 8.0.22 MySQL Community Server - GPL Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> # 之后就和一般情況下mysql的操作一樣了。
使用Xftp連接到服務器
把本地的sql文件上傳到服務器
使用docker cp命令把sql文件復制到容器
docker cp crownBlog.sql crownBlog-mysql:/home (docker cp 第一個參數指定本地文件或者文件夾,第二個參數指定容器及容器內的目標文件夾)
登入容器并登錄mysql: docker exec -it crownBlog-mysql mysql -uroot -p123456
執行sql文件 :source /home/crownBlog.sql
使用Xftp把后端代碼上傳到服務器
進入代碼編寫Dockerfile文件
FROM golang:latest RUN go env -w GO111MODULE=on RUN go env -w GOPROXY=https://goproxy.cn,https://goproxy.io,direct WORKDIR $GOPATH/src/crownBlog COPY . $GOPATH/src/crownBlog RUN go build . EXPOSE 8085 ENTRYPOINT ["./blog"]
配置crownblog的config文件
mod改為release
srv改為服務器ip 數據庫host改為剛才映射的數據庫ip
在Dockerfile這個目錄下
$ docker build -t crownblog . $ docker run -d -p 8085:8085--name crownblog crownblog #這樣訪問服務器IP:8085就可以訪問網站了
上述內容就是如何在docker中部署crownblog項目,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。