前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第四章 开源项目与部署

第四章 开源项目与部署

原创
作者头像
喵喵侠
发布2022-01-23 05:27:51
5960
发布2022-01-23 05:27:51
举报
文章被收录于专栏:喵喵学前端喵喵学前端

文件与数据存储

运行todo项目

进入app目录

代码语言:javascript
复制
app
├── Dockerfile
└── spec             
└── src
└── yarn.lock

源代码下载:getting-started源代码压缩包

新建Dockerfile

代码语言:javascript
复制
FROM node:12-alpine
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN apk add --no-cache python3 g++ make
RUN yarn config set registry http://mirrors.cloud.tencent.com/npm/
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]

打包镜像

代码语言:javascript
复制
docker build -t tke-todo .

运行

代码语言:javascript
复制
docker run -dp 3001:3000 tke-todo

不指定容器name,name会自动随机生成。

存储卷Volume

存储卷Volume的作用,是让数据持久化。

代码语言:javascript
复制
docker volume create todo-db   #创建一个名为todo-db的存储卷
docker volume ls               #列出所有存储卷
docker volume inspect todo-db  #查看存储卷的信息
docker volume --help           #了解dokcer volume的所有指令

容器使用存储卷

代码语言:javascript
复制
docker run -dp 3002:3000 -v todo-db:/etc/todos tke-todo

把3002端口的容器stop后,再run一个容器。

代码语言:javascript
复制
docker run -dp 3003:3000 -v todo-db:/etc/todos tke-todo

发现之前添加的数据还在。

存储卷的数据可以共享给多个容器使用。

查看容器以及导出容器

新建一个终端

代码语言:javascript
复制
docker ps               #查看正在运行的容器列表,以及找到运行tke-todo的容器ID
docker exec -it <容器ID或name> /bin/sh    #换成你的容器ID

进入存储卷路径,查看db。

代码语言:javascript
复制
cd /etc/todos           #进入到存储卷Volume挂载的点
ls                      #查看文件夹下的文件列表        

导出为tar压缩包

代码语言:javascript
复制
docker ps                                #从列表中找到你要导出的容器ID或名称
docker export <容器ID/名称> -o 压缩包名.tar #导出容器里的所有文件

注意:执行docker命令需要退出交互模式,进入普通的终端模式。导出后的文件,在命令行的当前目录下。

导出的文件包含整个镜像和存储卷Volume。

Wordpress与数据库

拉取wordpress和mysql镜像

代码语言:javascript
复制
docker pull wordpress
docker pull mysql
​

创建一个存储卷

代码语言:javascript
复制
docker volume create wordpress-mysql-data

初始化并启动mysql容器

代码语言:javascript
复制
docker run -d \
    --name tke-mysql \
    -v wordpress-mysql-data:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=tketke \
    -e MYSQL_DATABASE=wordpress \
    mysql

多行命令建议用git bash,cmd不支持。

新建一个cmd,进入交互模式

代码语言:javascript
复制
docker exec -it tke-mysql mysql -u root -p 

提示输入密码,密码为刚刚设置的tketke

密码输入不可见,输入完成回车,进入mysql交互模式。

输入命令SHOW DATABASES; 可以查看看到创建好的wordpress数据库。

注意:命令后面有个分号,show和databases要用空格分开,不区分大小写。

Docker安装Wordpress

创建网络

代码语言:javascript
复制
docker network create wordpress-net #创建名称为wordpres-net的网络
docker network --help
docker network ls

数据库桥接到网络

代码语言:javascript
复制
docker network connect wordpress-net tke-mysql

查看MySQL容器的详细地址,可以找到IP地址信息。

代码语言:javascript
复制
docker inspect tke-mysql

如果嫌数据太多太难找,可以使用命令:

代码语言:javascript
复制
docker inspect -f '{{ $network := index .NetworkSettings.Networks "wordpress-net" }}{{ $network.IPAddress}}' tke-mysql

注意下,windows上运行命令,会出现报错:

代码语言:javascript
复制
Template parsing error: template: :1: unclosed action

若要正常执行,则需要用双引号包裹(实际还是不能,有待考究)

建议networks命名不要带-

代码语言:javascript
复制
docker inspect -f "{{ $network := index .NetworkSettings.Networks "wordpress-net" }}{{ $network.IPAddress}}" tke-mysql

参考:docker - Template parsing error: template: :1: unclosed action - Stack Overflow

git bash运行则不会有这个问题

启动一个wordpress

代码语言:javascript
复制
docker run -dp 8008:80 \
    --name tke-wordpress \
    --network wordpress-net \
    -v wordpress_data:/var/www/html \
    -e WORDPRESS_DB_HOST=172.20.0.2:3306 \
    -e WORDPRESS_DB_USER=root \
    -e WORDPRESS_DB_PASSWORD=tketke \
    -e WORDPRESS_DB_NAME=wordpress \
    wordpress

上面命令太长了,可以复制内容,保存为wordpress.sh

Windows上运行sh文件,方式有两种:

  1. 右键文件,使用git bash运行(推荐)
  2. 当前目录进入git bash,执行sh wordpress.sh

参考:Windows系统下如何运行.sh脚本文件-百度经验

腾讯云容器服务

新建私有网络和子网

创建EKS弹性集群

创建完成后,需要去左侧【实例管理】里面,找到【更多】,点击【重置密码】。(第一次用必须经过这一步)

输入登录命令:

代码语言:javascript
复制
docker login --username=<你的账号> ccr.ccs.tencentyun.com

输入密码后,显示登录成功。

给之前本地的镜像打标签,ImageId是本地的镜像名称或ID

代码语言:javascript
复制
docker tag [ImageId] ccr.ccs.tencentyun.com/[你的镜像仓库命名空间]/[你的镜像仓库名称]:[tag]

随后可以push到云端的镜像仓库了

代码语言:javascript
复制
docker push ccr.ccs.tencentyun.com/[你的镜像仓库命名空间]/[你的镜像仓库名称]:[tag]

举例:

代码语言:javascript
复制
docker tag tke-todo ccr.ccs.tencentyun.com/[你的镜像仓库命名空间]/tke-todo:1.0.1
docker push ccr.ccs.tencentyun.com/[你的镜像仓库命名空间]/tke-todo:1.0.1

命名空间可以在腾讯云控制台查看,也可以从快捷指令中查看:

使用EKS快速部署应用

总结

今天的内容比较实战,学习了项目的部署,以及打包上传到腾讯云容器镜像服务。除了个别命令在windows的命令行中会报错外,没有遇到其他繁琐的问题。在云端部署应用后,要记得用完删掉创建过的Workload,以及【服务与路由】的Service。另外本地导出的带db的tar压缩包有400多M,后面用不到了,也要记得删掉。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文件与数据存储
    • 运行todo项目
      • 存储卷Volume
        • 查看容器以及导出容器
          • Wordpress与数据库
            • Docker安装Wordpress
          • 腾讯云容器服务
            • 新建私有网络和子网
            • 创建EKS弹性集群
          • 使用EKS快速部署应用
            • 总结
            相关产品与服务
            云数据库 SQL Server
            腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档