如何在docker中部署crownblog项目

本篇文章为大家展示了如何在docker中部署crownblog项目,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

前端项目打包

  • 找到.env.production 修改为自己的ip或者域名地址

  • 执行命令npm run build生成dist文件

  • 把dist文件拷贝到后端项目目录下(使用go自带的http服务来部署前端项目)

如何在docker中部署crownblog项目

后端项目部署

一、服务器的配置

  • 购买阿里云服务器

  • 打开服务器的8085和3306端口

  • 使用Xshell登陆服务器

二、安装docker

官方文档: docs.docker.com/get-docker/

选择对应的系统进行查看,以ubuntu 18.04 LTS为例

卸载旧版本

sudoapt-getremovedockerdocker-enginedocker.iocontainerdrunc

Readingpackagelists...Done
Buildingdependencytree
Readingstateinformation...Done
Package'docker-engine'isnotinstalled,sonotremoved
Package'docker'isnotinstalled,sonotremoved
Package'containerd'isnotinstalled,sonotremoved
Package'docker.io'isnotinstalled,sonotremoved
Package'runc'isnotinstalled,sonotremoved
0upgraded,0newlyinstalled,0toremoveand3notupgraded.

添加新版本仓库

sudoapt-getupdate

udoapt-getinstall\
apt-transport-https\
ca-certificates\
curl\
gnupg-agent\
software-properties-common

获取官方GPG key

#curl-fsSLhttps://download.docker.com/linux/ubuntu/gpg|sudoapt-keyadd-

验证key,如果输出的是下列内容,则说明正确

#apt-keyfingerprint0EBFCD88

pubrsa40962017-02-22[SCEA]
9DC858229FC7DD38854AE2D88D81803C0EBFCD88
uid[unknown]DockerRelease(CEdeb)<docker@docker.com>
subrsa40962017-02-22[S]

添加仓库地址(用国内的仓库下载,速度较快)

$sudoadd-apt-repository\
"deb[arch=amd64]https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/\
$(lsb_release-cs)\
stable"

更新仓库和安装

$sudoapt-getupdate

$sudoapt-getinstalldocker-cedocker-ce-clicontainerd.io

进行验证,运行hello-world

$dockerpullhello-world
$dockerrunhello-world
#出现以下信息,表示docker安装成功,已经可以正常运行
HellofromDocker!
Thismessageshowsthatyourinstallationappearstobeworkingcorrectly.
Togeneratethismessage,Dockertookthefollowingsteps:

1.TheDockerclientcontactedtheDockerdaemon.
2.TheDockerdaemonpulledthe"hello-world"imagefromtheDockerHub.(amd64)
3.TheDockerdaemoncreatedanewcontainerfromthatimagewhichrunstheexecutablethatproducestheoutputyouarecurrentlyreading.
4.TheDockerdaemonstreamedthatoutputtotheDockerclient,whichsentittoyourterminal.
Totrysomethingmoreambitious,youcanrunanUbuntucontainerwith:
$dockerrun-itubuntubash
Shareimages,automateworkflows,andmorewithafreeDockerID:
https://hub.docker.com/
Formoreexamplesandideas,visit:
https://docs.docker.com/get-started/

使用阿里镜像站来加速

地址:mirrors.aliyun.com/

sudomkdir-p/etc/docker
sudotee/etc/docker/daemon.json<<-'EOF'
{
"registry-mirrors":["https://XXX你的id.mirror.aliyuncs.com"]
}
EOF
sudosystemctldaemon-reload
sudosystemctlrestartdocker

三、拉取镜像和创建镜像和容器编排

Mysql服务器的镜像

首先,个人非常不建议mysql用docker来部署,有几个原因:

  • 必须做数据卷的映射,千万不能 将数据库数据放在docker容器中运行,否则一但删除容器数据将全部清空,所以一定要做数据持久化!!;

  • 不利于io,数据读写在容器中读写一次,在绑定的卷中还要读写一次,两倍读写压力,性能上要打折扣。

如果非要在docker上部署mysql,可以这么做

#首先确定mysql是否能被搜素到,这步可以跳过,也可以在dockerhub.com中搜索
dockersearchmysql

#拉取镜像
dockerpullmysql#这里默认是拉取的最新版本,如果需要特定版本可以在镜像后面添加tag,具体版本信息可以在dockerhub.com查询

#特定版本拉取,比如要拉取8.0.22(版本号一定要是官方放出的版本号,否则是查找不到的)
dockerpullmysql:8.0.22

#这时可以查看下拉取的镜像
dockerimages

#运行镜像
dockerrun-d-p3306:3306-v/crownBlog/datadir:/var/lib/mysql--namecrownBlog-mysql-eMYSQL_ROOT_PASSWORD=123456mysql

#-d表示后台运行,并返回容器id
#-p3006:3306表示端口映射,具体为-p主机端口:容器端口
#--name给容器取个名字
#-eMYSQL_ROOT_PASSWORD=password给mysqlroot管理员设置密码
#-v/crownBlog/datadir:/var/lib/mysql添加数据卷
/crownBlog/datadir是主机的数据库路径
/var/lib/mysql是容器中的数据库路径,这一步非常重要

#进入容器配置
dockerexec-itcrownBlog-mysqlbash

root@ed9345077e02:/#mysql-uroot-p
Enterpassword:
WelcometotheMySQLmonitor.Commandsendwith;or\g.
YourMySQLconnectionidis8
Serverversion:8.0.22MySQLCommunityServer-GPL
Copyright(c)2000,2020,Oracleand/oritsaffiliates.Allrightsreserved.
OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.
Othernamesmaybetrademarksoftheirrespectiveowners.

Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.

mysql>

#之后就和一般情况下mysql的操作一样了。

四、创建数据库并导入数据文件

  • 使用Xftp连接到服务器

  • 把本地的sql文件上传到服务器

  • 使用docker cp命令把sql文件复制到容器

dockercpcrownBlog.sqlcrownBlog-mysql:/home
(dockercp第一个参数指定本地文件或者文件夹,第二个参数指定容器及容器内的目标文件夹)

登入容器并登录mysql: docker exec -it crownBlog-mysql mysql -uroot -p123456

执行sql文件 :source /home/crownBlog.sql

五、制作crownblog项目镜像

使用Xftp把后端代码上传到服务器进入代码编写Dockerfile文件

FROMgolang:latest
RUNgoenv-wGO111MODULE=on
RUNgoenv-wGOPROXY=https://goproxy.cn,https://goproxy.io,direct

WORKDIR$GOPATH/src/crownBlog
COPY.$GOPATH/src/crownBlog

RUNgobuild.

EXPOSE8085

ENTRYPOINT["./blog"]

配置crownblog的config文件mod改为release

srv改为服务器ip 数据库host改为刚才映射的数据库ip

六、生成镜像

在Dockerfile这个目录下

$dockerbuild-tcrownblog.
$dockerrun-d-p8085:8085--namecrownblogcrownblog


#这样访问服务器IP:8085就可以访问网站了

上述内容就是如何在docker中部署crownblog项目,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注恰卡编程网行业资讯频道。

发布于 2021-05-10 20:38:51
收藏
分享
海报
0 条评论
165
上一篇:引入CSS文件的方式有哪些 下一篇:使用IDEA连接mysql数据库时出现报错如何解决
目录

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码