将actix-web网站封装在docker中 - sbw Blog

将actix-web网站封装在docker中

来源: sbw Blog | 浏览: 50 | 评论: 0 发表时间: 2020-08-30

最新给网站添加了一些新功能,所以又重新编译部署了一下。由于我本地使用的是Archlinux,而跑网站的服务器使用的是Debian,编译出来的二进制在运行时出现libc版本不匹配的问题。直接在服务器上编译需要太多编译依赖,服务器上的内存和磁盘资源也不太够用,于是就决定使用docker。



先贴上我的Dockerfile


这里参考DockerRust 镜像里官方的推荐做法,先使用builder容器进行编译,然后直接将二进制拷贝到一个新容器中,这样就得到了一个相对干净、轻量的运行环境。在builder容器中由于有工具链和依赖以及编译临时文件,总大小有将近2个G,而新容器的大小只有150M左右。其实一开始我是使用alpine作为编译和运行环境的,这样构建出来的最终容器更小,只有几十M。但这样构建出来的程序总是跑不起来,具体原因还不太清楚,但似乎是musllibc导致的问题,所以使用debian-slim轻松先搞定了。


由于服务器上的资源限制,无法在远端制作镜像,所以我选择把本地的docker镜像导出,再直接加载到服务器的docker中。使用docker savedocker load来将docker-images导出导入:


为了方便管理,不至于每次打那一长串难记的docker命令,我比较习惯使用docker-compose


使用

来直接启动导入的镜像,不进行重新构建。为了能让容器中访问Host中的数据库,所以我将数据库的sock共享给了容器中,所以在连接数据库的时候,要指定使用unixsock的连接方式,比如使用如下的url:




没有人评论过此文,还不快抢个沙发
  • 昵称: *
  • 邮箱:
  • 网址:
  • 记住我的信息
  • Color
  • Red
  • Blue
  • Code
  • bash
  • cpp
  • css
  • java
  • js
  • perl
  • php
  • python
  • ruby
  • sql
  • xml