一些关于 Docker 的问题
Closed this issue · 5 comments
wi1dcard commented
- 不应该将启动脚本写成
run.sh
,应当使用 Docker Compose 代替。 - 可以使用 Docker Hub 自带的 Build 功能,注册账号配置好之后自动 Build 并同步到 Registry,大家不需要再次 Build,直接
docker pull
即可;同时也可以节省你服务器的带宽。 - 因为「2」,所以可以直接删掉
build.sh
。 - 使用 CentOS 之类的镜像作为基础镜像会让你的应用镜像出奇的大(几百 MiB),建议使用 Alpine。
- Dockerfile 的
MAINTAINER
字段已经废弃。 - 若使用
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/ - 不应该将 MongoDB 和你的应用捆绑在同一个镜像,这是一个 Anti-pattern,应当使用 Docker Compose。
- 由于你的
teaweb.sh
是个长期运行的进程,因此不应当使用ENTRYPOINT
,使用CMD
指定容器启动时的默认命令更加合适。若坚持使用 ENTRYPOINT,请确保bin/teaweb
是 Daemon 运行且teaweb.sh
末尾添加exec $@
。
iwind commented
Hi,我对docker没那么熟,如果有时间的话,可以提供一个完整的示例吗?
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
没有进一步的回复,暂时先关闭。