TeaWeb/build

一些关于 Docker 的问题

Closed this issue · 5 comments

  1. 不应该将启动脚本写成 run.sh,应当使用 Docker Compose 代替。
  2. 可以使用 Docker Hub 自带的 Build 功能,注册账号配置好之后自动 Build 并同步到 Registry,大家不需要再次 Build,直接 docker pull 即可;同时也可以节省你服务器的带宽。
  3. 因为「2」,所以可以直接删掉 build.sh
  4. 使用 CentOS 之类的镜像作为基础镜像会让你的应用镜像出奇的大(几百 MiB),建议使用 Alpine。
  5. Dockerfile 的 MAINTAINER 字段已经废弃。
  6. 若使用 RUN 的多行形式,请使用以下两种格式任选其一:
    RUN set -xe; \
    	echo foo; \
    	echo bar;
    
    RUN echo foo \
    	&& echo bar \
    	&& echo more
    
    亦可结合使用 set -xe&&,这是最普遍的写法。注意 set -xe 中的 -e,如果不使用该参数,将会导致多条脚本运行过程中出现错误依旧会继续执行,导致构建出的镜像异常。更多信息:https://vaneyckt.io/posts/safer_bash_scripts_with_set_euxo_pipefail/
  7. 不应该将 MongoDB 和你的应用捆绑在同一个镜像,这是一个 Anti-pattern,应当使用 Docker Compose。
  8. 由于你的 teaweb.sh 是个长期运行的进程,因此不应当使用 ENTRYPOINT,使用 CMD 指定容器启动时的默认命令更加合适。若坚持使用 ENTRYPOINT,请确保 bin/teaweb 是 Daemon 运行且 teaweb.sh 末尾添加 exec $@
iwind commented

Hi,我对docker没那么熟,如果有时间的话,可以提供一个完整的示例吗?

@iwind 好的,我找时间修改一下提交 PR。

tossp commented
version: '3'

services:
 teaweb:
  image: tossp/teaweb
  container_name: teaweb
  volumes:
    - ./storage/backups:/teaweb/backups
    - ./storage/logs:/teaweb/logs
    - ./_VHS:/VHS
  expose:
    - "80"
    - "443"
    - "7777"
  ports:
    - "80:80"
    - "443:443"
    - "7777:7777"
  restart: on-failure
iwind commented

没有进一步的回复,暂时先关闭。