将 blog-client、blog-server、PostgreSQL、Redis、Elasticsearch 打包为独立镜像 blog
1.3K
独立镜像约定只挂载一个总目录, 默认使用 HTTPS, 并在首次启动时自动生成 CA 证书与 HTTPS 证书。若第二次启动发现证书已存在, 则不会重复生成。
镜像会根据可见内存自动选择更保守的 ES、PostgreSQL、Nginx 参数。若是小内存机器, 建议在启动容器前, 直接在部署宿主机执行一次如下命令。
sudo sysctl vm.overcommit_memory=1
如需手动覆盖配置, 可在 docker run 时传入以下环境变量:
BLOG_MEMORY_PROFILE=smallBLOG_ES_JAVA_OPTS=-Xms384m -Xmx384mBLOG_PG_SHARED_BUFFERS=64MBBLOG_PG_MAX_CONNECTIONS=40HOST_IP="$(hostname -I | awk '{print $1}')" && sudo docker run -d \
--name blog \
-p 443:443 \
-v /data/blog:/data \
-e BLOG_PUBLIC_HOST="$HOST_IP" \
jiaopengzi/blog:latest
首次启动后, 可从宿主机挂载目录导出 CA 证书:
/data/blog/certs/internal-ca/ca.crt
sudo docker run -d \
--name blog \
-p 443:443 \
-v /data/blog:/data \
-v /your/path/cert.pem:/data/blog-client/nginx/ssl/cert.pem \
-v /your/path/cert.key:/data/blog-client/nginx/ssl/cert.key \
-e BLOG_PUBLIC_HOST=blog.example.com \
jiaopengzi/blog:latest
sudo docker ps -a | grep blog
sudo docker logs blog
同时使用如下 curl 校验是否通畅
在部署机执行 curl -vk https://127.0.0.1:443,先确认宿主机本地 HTTPS 是否通。
在外部机器执行 curl -vk https://blog.example.com/,再看是 DNS、链路还是证书链问题。
如果您更习惯先把证书整理到数据目录, 也可以预先放到 /data/blog/blog-client/nginx/ssl/cert.pem 和 /data/blog/blog-client/nginx/ssl/cert.key, 再只挂载 -v /data/blog:/data 启动。
| 变量 | 默认值 | 说明 |
|---|---|---|
BLOG_PUBLIC_HOST | localhost | 对外访问域名或 IP, 用于生成默认证书和后端 host |
BLOG_HTTPS_PORT | 443 | 容器内 HTTPS 监听端口 |
BLOG_PG_PORT | 15432 | 容器内 PostgreSQL 监听端口 |
BLOG_REDIS_PORT | 16379 | 容器内 Redis 监听端口 |
BLOG_ES_PORT | 19200 | 容器内 Elasticsearch HTTPS 监听端口 |
sudo docker run -d blog:latest 不会自动发布宿主机端口, 仍需显式添加 -p 443:443, 否则无法从宿主机或局域网访问。-p 5432:15432。my.dic, 可在挂载目录中按需维护。Content type
Image
Digest
sha256:ff8344327…
Size
864.9 MB
Last updated
about 2 months ago
docker pull jiaopengzi/blog