• Stars
    star
    122
  • Rank 290,377 (Top 6 %)
  • Language
    Python
  • License
    MIT License
  • Created about 7 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A set of dockers for ESRI Arcgis Enterprise

docker-arcgis-enterprise

A set of dockers for ESRI ArcGIS Enterprise

History

*In 2017, I paid for an Esri development license and worked on putting ArcGIS Enterprise into Docker. I pretty much had it working when two things happened, (1) I got a day job and (2) the license ran out.

If I had a license I'd continue to develop it but I am not willing to pay right now. If you want me to do more work on it and you have a developer license, drop me a line.

After glancing over the code today, the next thing I'd be doing is converting from Docker to Docker Swarm. Esri chose to use Kubernetes instead of Swarm, for my purposes Kubernetes is overkill. Sort of like using Windows Server when Linux would work... :-)

--Brian*

Overview

Make sure you check the wiki, https://github.com/Wildsong/docker-arcgis-enterprise/wiki

There were 4 separate github repos for this project, they have been combined into one repo for all four dockers.

Each of these folders contains files to build a separate Docker image:

  • arcgis-server/
  • portal-for-arcgis/
  • web-adaptor/
  • datastore/

Create a network

To connect the separate dockers together and enable the use of hostnames requires creating a custom network.

Use this command:

docker network create wildsong.lan

Each of the provided scripts in this repo assumes you use "wildsong.lan" as the network name.

You only have to do this once, it hangs around in your docker engine.

When I am building and testing everything on my Mac, I just append the addresses to my /etc/hosts file so that name lookups work. For example,

cat >> /etc/hosts
127.0.0.1 portal portal.wildsong.lan 
127.0.0.1 server server.wildsong.lan
127.0.0.1 web-adaptor web-adaptor.wildsong.lan
127.0.0.1 datastore datastore.wildsong.lan

You don't have to use "wildsong.lan", but if you change that then change AGS_DOMAIN too, see below.

Build everything

  • Download archives from ESRI. Put each tar.gz file in the appropriate folder.
  • Create provisioning files for ArcGIS Server and Portal for ArcGIS and put them in their folders.

(For testing only, it is also possible to build these containers without the propietary ESRI files, and that's what will happen on hub.docker.com once I get things sorted out.)

Build the containers using Docker Compose

  docker-compose build

When you are done you should be able to see each image with the command "docker images"; on my machine I see this:

REPOSITORY TAG IMAGE ID CREATED SIZE wildsong/datastore latest 2b61b9429659 2 minutes ago 2.835 GB wildsong/web-adaptor latest ab34fd0cdea5 4 minutes ago 1.156 GB wildsong/portal-for-arcgis latest e2e69bac2ca6 5 minutes ago 9.252 GB wildsong/arcgis-server latest eae45e398fac 16 minutes ago 12.39 GB

Set environment variables

Copy the sample.env file to .env and edit it.

Run everything

I'm using docker-compose, so you should be able to start (in theory) everything with

docker-compose up -d

and they will be running in background because of the -d.

2021-09-23 Currently I'm only working on Datastore, so I do

docker-compose up datastore

This starts only the datastore and leave it running in foreground so I can watch the log messages.

My intention is to start them all at once but I don't have a license right now.

I used to start each component separately like this, so I could watch all the startup messages,

  • window #1, cd arcgis-server && ./runags
  • window #2, cd portal-for-arcgis && ./runportal
  • window #3, cd web-adaptor && ./runwa
  • window #4, cd datastore && ./runds

Resources

You can learn a lot about how ESRI thinks provisioning should be done by reading the source code from their Github Chef repository. For example, here is the code that creates a site by using REST. This is ruby code from arcgis-cookbook/cookbooks/arcgis-enterprise/libraries/server_admin_client.rb that is pretty easy to read, basically it's filling in a form and sending it.

  log_settings = {
    'logLevel' => log_level,
    'logDir' => log_dir,
    'maxErrorReportsCount' => 10,
    'maxLogFileAge' => max_log_file_age }

  request = Net::HTTP::Post.new(URI.parse(
    @server_url + '/admin/createNewSite').request_uri)

  request.set_form_data('username' => @admin_username,
                        'password' => @admin_password,
                        'configStoreConnection' => config_store_connection.to_json,
                        'directories' => directories.to_json,
                        'settings' => log_settings.to_json,
                        'cluster' => '',
                        'f' => 'json')

  response = send_request(request, @server_url)

  validate_response(response)

You should be able to see the form by going to https://yourserver:6443/admin/createNewSite

More Repositories

1

ArcGIS_Python_Template

Example of how to set up a Python Toolbox for ESRI ArcGIS
Python
29
star
2

geoserver-compose

GeoServer + GeoWebCache + PostGIS + pgadmin + nginx all together in a Docker Compose setup.
Shell
10
star
3

docker-experience-builder

Create a Docker image for ESRI ArcGIS Experience Builder
8
star
4

docker-arcgis-server

Docker for ESRI ArcGIS Enterprise ArcGIS Server
6
star
5

arctic-monitor

System for monitoring an ArcGIS license manager
Python
4
star
6

svelte-maps

Demo of Svelte framework + OpenLayers + Esri Javascript API
Svelte
4
star
7

docker-caddy-proxy

Caddy webserver running in Docker, set up for use as a reverse proxy and static content server.
HTML
3
star
8

docker-ubuntu-server

Base Ubuntu server to support other geo-ceg projects.
Dockerfile
3
star
9

arcmap_2maps_per_page

Python script to generate PDF map series with 2 maps per page
Python
2
star
10

shoveltest

Create grids to facilitate shovel tests for archaeology site work.
Python
2
star
11

docker-portal-for-arcgis

Docker running ESRI Portal for ArcGIS in an Ubuntu server.
2
star
12

docker-arcgis-datastore

Docker container for the ESRI ArcGIS Enterprise Data Store
2
star
13

webmaps

A web mapping application based on @map46/ol-react OpenLayers + React;.
JavaScript
2
star
14

docker-ArcGISWebAppBuilder

Runs ESRI WebAppBuilderForArcGIS (Developer edition) in a Docker container.
JavaScript
2
star
15

docker-caddy-mediawiki

Dockerized Mediawiki server running on Caddy, PHPFPM and MariaDB
PHP
1
star
16

arctic

A dashboard for ArcGIS Online / ArcGIS Portal
Python
1
star
17

lidar-postgis

Import a collection of LiDAR LAZ files into PostGIS as a point cloud.
Python
1
star
18

arcgis_tools

Python
1
star
19

docker-conda-arcgis

Dockerfile
1
star
20

docker-postgresql

Base Docker image to be used to build either a postgresql client or server.
1
star
21

BetterMerge

ArcGIS Python Toolbox with batch merge tool for feature classes
Python
1
star
22

arcgis-wab-widget-template

A template for developing a new widget for Esri ArcGIS Web AppBuilder
JavaScript
1
star
23

docker-tomcat8

Builds a Docker containing a tomcat8 java app server on ubuntu-server.
1
star