Ubuntu18.04下使用 Docker 构建并测试 Web 应用程序

构建 Sinatra 应用程序

创建文件夹:

mkdir sample01 && cd sample01
touch Dockerfile

编辑 Dockerfile :

FROM ubuntu:18.04
MAINTAINER nikki nikki@example.com
ENV REFRESHED_AT 2019-10-19

RUN apt-get update
RUN apt-get -y install ruby-full
RUN apt-get -y install  build-essential redis-tools
RUN gem install --no-rdoc --no-ri sinatra json redis

RUN mkdir -p /opt/webapp

EXPOSE 4567

CMD [ "/opt/webapp/bin/webapp" ]

Dockerfile 依旧完成了一些安装任务,并在最后使用 CMD 指定 /opt/webapp/bin/webapp 作为 Web 应用程序的启动文件

构建:

sudo docker build -t nikki01/sinatra .

创建 Sinatra 容器

创建镜像之后,下载 Sinatra Web 应用程序的源代码,因为原书给的链接失效了,所以我将整本书的代码都下载下来

链接:https://pan.baidu.com/s/1mw_I0mBv6n78N2UGDTW_DQ&shfl=sharepset
提取码:m68w

这里用到的文件目录在:

dockerbook-code-master/code/5/sinatra

找到其中的 webapp 目录,将其复制到 sample01 中并查看:

ls -l webapp

应该有 bin、lib、Dockerfile 三个文件夹

给其中的文件添加可执行权限:

chmod +x $PWD/webapp/bin/webapp

使用 docker run 从镜像创建一个新容器:

sudo docker run -d -p 4567 --name webapp -v $PWD/webapp:/opt/webapp nikki01/sinatra

这里从 nikki01/sinatra 镜像创建了一个新的名为 webapp 的容器,指定了一个新卷 $PWD/webapp 存放新的 Sinatra Web 应用程序,并将这个卷挂载到在 Dockerfile 里创建的目录 /opt/webapp

CMD 指令指定了要运行的命令,此时可以使用 docker logs 查看输出:

sudo docker logs webapp

使用 docker top 命令查看 Docker 容器里正在运行的进程:

sudo docker top webapp

查看刚才指定的端口映射到本地宿主机的哪个端口:

sudo docker port webapp 4567

在我的机器上是映射到 32772
在这里插入图片描述
目前的 Sinatra 应用没做什么,只是接受输入参数,可以使用 curl 命令(先确保安装了 curl)测试这个程序:

curl -i -H 'Accept:application/json' -d 'name=Foo&status=Bar' http://localhost:32772/json

在这里插入图片描述
可以看到,传入的参数转化成 JSON 散列后的输出:{“name”:“Foo”,“status”:“Bar”}

构建 Redis 镜像和容器

现在我们要扩展 Sinatra 应用程序,加入 Redis 后端数据库,并在 Redis 数据库中存储输入的参数,因此需要构建全新的镜像和容器运行 Redis 数据库,之后利用 Docker 的特性关联两个容器

创建一个新的镜像:

mkdir sample02 && cd sample02
touch Dockerfile

Dockerfile 内容如下:

FROM ubuntu:18.04
MAINTAINER nikki nikki@example.com
ENV REFRESHED_AT 2019-10-20
RUN apt-get update
RUN apt-get -y install redis-serve
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值