首页 > 其他分享 >docker 制作与使用 arcgisserver 镜像

docker 制作与使用 arcgisserver 镜像

时间:2024-03-13 17:44:54浏览次数:24  
标签:arcgis server etc && 镜像 docker ags arcgisserver

PS: 有状态服务本身不适合部署到容器中,数据恢复比较困难,生产环境请直接安装到Linux服务器中

1. 准备内容

在同级目录下,准备以下内容

  • 空的dockerfile文件:arcgisserver.dockerfile

  • linux版的ArcGISServer安装包:ArcGIS_Server_Linux_xxxxxx.tar.gz

  • ArcGISServer的许可文件:ArcGISServerxx_xxxxxx.ecp

在空白 arcgisserver.dockerfile文件中填入下面内容:

# 基于centos8
FROM centos:latest 
################
# dockerfile中的命令尽量写在一起,不然镜像会很大
# 因为每个条命令都会成生一个页层(在完全复制上一个页层并添上新的)
################

    # 暴露端口
EXPOSE 1098 4000 4001 4002 4003 4004 6006 6080 6099 6443

ENV TZ=Asia/Shanghai
    # 设置时区
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone && \
    sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* && \
    sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* && \
    # 安装中英文语言包, -y:Y/N时默认执行Y
    yum install -y glibc-langpack-zh && \
    yum install -y glibc-langpack-en && \
    echo "export LC_ALL=zh_CN.utf8" >> /etc/profile && \
    source /etc/profile && \
    # 安装vim
    # yum install -y vim && \
    # 安装用户密码包
    yum install -y passwd && \
    # 安装必要的编译包
    yum install -y gettext && \
    # 设置用户密码
    echo "root:lqqgis"|chpasswd && \
    # 使用groupadd和useradd命令创建用户ags和组local,并将ags用s户加入local组,ags用户的密码是arcgis。
    groupadd local && \
    useradd -g local -m -r ags && \
    echo "ags:lqqgis"|chpasswd && \
    # /***********安装成功后要根据实际情况进行修改***********/
    echo 'HOSTNAME = arcgisserver' >> /etc/sysconfig/network && \
    # echo '127.0.0.1 arcgisserver.local.server arcgisserver' >> /etc/hosts #报错,失败:/etc/hosts: Read-only file system
    # 创建安装文件夹,并文件进行权限修改
    # ArcGIS_Server_Linux_108_172977.tar.gz解压后为/tmp/ArcGISServer
    mkdir /tmp/ArcGISServer && \
    chown -R ags:local /tmp/ && \
    chown -R 777 /tmp/ && \
    chown -R ags:local /tmp/ArcGISServer && \
    chmod -R 777 /tmp/ArcGISServer && \
    # 编辑limits.conf文件,在文件的最后一行, `#End of file`前添加如下内容:
    echo 'ags soft nofile 66666\n ags hard nofile 66666\n ags soft nproc 25059\n ags hard nproc 25059'>> /etc/security/limits.conf && \
    # 安装sudo,配置用户
    yum install -y sudo && \
    echo 'ags ALL=(ALL) NOPASSWD:ALL'>> /etc/sudoers && \
    # 删除yum安装包缓存
    yum clean all

VOLUME [ "/home/ags/arcgis/server/usr/directories", "/home/ags/arcgis/server/usr/config-store" ]

# 切换到ags用户
USER ags

    # 将当前dockerfile同路径的安装包tar.gz/授权文件.ecp导入至linux系统文件夹/tmp/下
    # ADD导入tar.gz, 会自动解压, 并删除原文件
ADD ./ArcGIS_Server_Linux_108_172977.tar.gz \
    ./ArcGISServer108_ECP791891115.ecp \
    /tmp/

    # 运行安装Setup -m 静默安装;
    # -l yes 许可协议同意;
    # -d 安装路径, 即arcgis/server的路径, 默认为/home/ags/;
    # -a 授权文件
RUN /tmp/ArcGISServer/Setup -m silent -l yes -a /tmp/ArcGISServer108_ECP791891115.ecp &&\
    sudo rm -rf /tmp/ArcGISServer

   # 运行服务
CMD /home/ags/arcgis/server/startserver.sh &&\
    tail -f /home/ags/arcgis/server/framework/etc/service_error.log
# ENTRYPOINT ["/bin/bash"]

2.使用 dockerfile 文件创建镜像

docker build -f lqqgis-arcgisserver108.dockerfile -t lqqgis/arcgisserver:10.8 .

# 查看 docker 存储情况
docker system df
# 删除 dockerfile 创建 IMAGE 过程产生的 docker 的 build cacha 缓存
docker builder prune

3.使用镜像

docker run -it --name arcgisserver \
    --hostname arcgisserver -p 6443:6443 -p 6080:6080 \
    lqqgis/arcgisserver:10.8
    
# 挂载arcgisserver缓存服务的文件夹    
docker run -it --name arcgisserver \
   --hostname arcgisserver -p 6443:6443 -p 6080:6080 \
   -v /home/lqq/webapp/arcgis/server/directories:/home/ags/arcgis/server/usr/directories \
   -v /home/lqq/webapp/arcgis/server/config-store:/home/ags/arcgis/server/usr/config-store \
   lqqgis/arcgisserver:10.8

PS:挂载 arcgisserver 的 directories 与 config-store 服务的文件夹时,一定要对宿主机挂载路径设置为所有用户可访问,因为 arcgisserver 容器的用户是 ags 不是 root 用户,默认挂载后,在创建站点时,arcgisserver会报错

chomd -R 777 /home/lqq/webapp/arcgis/server/directories
chomd -R 777 /home/lqq/webapp/arcgis/server/config-store

4. 将镜像打包

这个镜像有11.8G,打包为.tar,便于共享给其他人。

docker save lqqgis/arcgisserver:10.8 -o lqqgis_arcgisserver_10.8.tar

标签:arcgis,server,etc,&&,镜像,docker,ags,arcgisserver
From: https://www.cnblogs.com/lqqgis/p/18071115

相关文章

  • Docker部署运行kkFileView
     kkfileview的预览文件位于容器内/opt/kkFileView-4.1.0/filekkfileview的配置文件位于容器内/opt/kkFileView-4.1.0/config目录可能随着版本号变化,建议先运行之后进去看一下实际的目录(dockerexec-it容器idbash)之后把配置文件拷贝出来,当然如果已有配置文件直接运行映射目......
  • docker_02days
    #镜像 dockerpull名字:标签dockerimagesdockerrmi镜像id---------dockerpush本地镜像#把本地镜像推送到自己仓库#容器:镜像运行起来成为一个个容器,一个容器,就当成是一个虚拟机装了个操作系统 dockerpsdockerps-adockerstop......
  • docker-compose安装minio集群
    一、docker-compose安装minio单机版直接使用docker安装单机版,可用于测试创建.env环境文件MINIO_PASSWORD=minio@123创建docker-compose.yml环境文件version:"3"services:minio:image:minio/miniocontainer_name:minioports:-9000:9000......
  • Docker
    Docker指令Redis容器化命令0下载Redis镜像dockerpullredis1查看正在运行的容器dockerps0创建并运行Redisdockerrun-d-p6379:6379--nameredisredis1启动Redis容器dockerstartredis0启动//客户端启动dockerexec-itredisredis-cli//服务......
  • Docker 笔记(四)--网络
    这篇笔记写的时间很久,记录了Docker的网络知识,概念从浅入深,对docker网络有一个大体介绍,对部分细节做了详细解析,但涉及的知识点太多,未能在一篇中全部罗列,后续逐步完善吧。目录参考环境网络命令1.默认网络2.查看信息2.1查看bridge网络信息2.2查看host网络信息2.3查看......
  • 十分钟掌握分布式数据库开发:OpenMLDB 开发者镜像详解
    OpenMLDB是一款国产的、开源的、面向时序数据的分布式内存数据库系统,它专注于高性能、高可靠性和易扩展性,适用于海量时序数据的处理以及在线特征的实时计算。在大数据和机器学习的浪潮中,OpenMLDB以其强大的数据处理能力和高效的机器学习支持,在开源数据库领域崭露头角。OpenMLDB......
  • dockerfile多阶段构建镜像
    dockerfile多阶段构建镜像Docker多阶段构建是一种在Dockerfile中使用多个构建阶段来创建镜像的方法。它可以帮助减小最终镜像的大小,并且可以将构建过程分解为多个步骤,提高构建效率。以下是一个使用多阶段构建的示例Dockerfile:#第一阶段:构建应用程序FROMgolang:1.16ASbuilde......
  • 45_docker-compose_mysql8.0
    1.安装Docker-composecurl-L"https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname-s)-$(uname-m)"-o/usr/local/bin/docker-composechmod+x/usr/local/bin/docker-composeln-s/usr/local/bin/docker-compose/usr/b......
  • 44_docker-compose_mysql5.7
    1.安装Docker-composecurl-L"https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-\$(uname-s)-\$(uname-m)"-o/usr/local/bin/docker-composechmod+x/usr/local/bin/docker-composeln-s/usr/local/bin/docker-compose/u......
  • 46_docker-compose_nginx
    1.安装Docker-composecurl-L"https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-$(uname-s)-$(uname-m)"-o/usr/local/bin/docker-composechmod+x/usr/local/bin/docker-composeln-s/usr/local/bin/docker-compose/usr/b......