Docker 部署 astrometry.net 星图匹配

Alala

整体思路:

  • 安装 docker, docker compose
  • 下载星表
  • 启动 docker 容器
  • 命令调用 docker 运行

最终效果:

# 进入目录:
cd /opt/astrometry
# 运行解算
 docker compose run --rm solver-heavy \
  --config /etc/astrometry.cfg \
          --dir /output/heavy \
  --overwrite \
  /input/test.fits
# 等待得到结果

详细部署过程:

1、安装 docker

Ubuntu:服务器上实际使用的: https://docs.docker.com/desktop/setup/install/linux/ubuntu/

  • 安装后,可以将使用它的用户添加进 docker 组。注意,进入docker组的用户相当于获得sudo权限。
  • sudo usermod -aG docker user_to_use
* Mac 安装请参考:
  https://docs.docker.com/desktop/setup/install/mac-install/

2、创建相应目录:

/opt/astrometry/
├── docker-compose.yml (docker compose 启动配置)
├── config/(配置文件)
│   └── astrometry.cfg
├── indexes-light/(轻量星表)
├── indexes-heavy/(重型星表)
├── input/(待测图像)
└── output/(输出结果)
    ├── light/
    └── heavy/
* Mac 创建目录建议:
  mkdir -p ~/astrometry/{indexes-light,indexes-heavy,input,output/light,output/heavy,config}
cd ~/astrometry
*

3、下载星表:

轻量(60G)

cd /opt/astrometry/indexes-light
wget -c -r -l1 -np -nd -A "*.fits" https://portal.nersc.gov/project/cosmo/temp/dstn/index-5200/LITE/

重型(128G)

cd /opt/astrometry/indexes-heavy
wget -c -r -l1 -np -nd -A "*.fits" https://portal.nersc.gov/project/cosmo/temp/dstn/index-5200/

4、准备 Docker Compose 配置并拉取镜像

docker-compose.yml中写入:

name: astrometry

services:
  solver-light:
    image: astrometrynet/solver:0.98
    init: true
    user: "${UID}:${GID}"
    network_mode: "none"
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    tmpfs:
      - /tmp:rw,noexec,nosuid,size=1g
    volumes:
      - ./indexes-light:/usr/local/data:ro
      - ./config/astrometry.cfg:/etc/astrometry.cfg:ro
      - ./input:/input:ro
      - ./output:/output:rw
    entrypoint: ["solve-field"]
    command: ["--help"]

  solver-heavy:
    image: astrometrynet/solver:0.98
    init: true
    user: "${UID}:${GID}"
    network_mode: "none"
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    tmpfs:
      - /tmp:rw,noexec,nosuid,size=1g
    volumes:
      - ./indexes-heavy:/usr/local/data:ro
      - ./config/astrometry.cfg:/etc/astrometry.cfg:ro
      - ./input:/input:ro
      - ./output:/output:rw
    entrypoint: ["solve-field"]
    command: ["--help"]

config/astrometry.cfg写入:

cat > config/astrometry.cfg <<'EOF'
add_path /usr/local/data
autoindex
inparallel
EOF

拉取镜像:

docker compose pull

5、运行:

将待测图像 test.fits 放入 input/ 中。 运行:

 (sudo)
 docker compose run --rm solver-heavy \
  --config /etc/astrometry.cfg \
  --dir /output/heavy \
  --overwrite \
  /input/test.fits

即可得到结果。 使用轻量星表,则将命令中的heavy替换为light即可。