如何在docker中部署crownblog项目
本篇文章为大家展示了如何在docker中部署crownblog项目,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
前端项目打包
找到.env.production 修改为自己的ip或者域名地址
执行命令npm run build生成dist文件
把dist文件拷贝到后端项目目录下(使用go自带的http服务来部署前端项目)
后端项目部署
一、服务器的配置
购买阿里云服务器
打开服务器的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项目,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注恰卡编程网行业资讯频道。