Patrick Williams | d849ec7 | 2016-08-17 14:59:38 -0500 | [diff] [blame^] | 1 | # All other flavors inherit the `common' config snippet |
| 2 | common: &common |
| 3 | issue: '"docker-registry server"' |
| 4 | # Default log level is info |
| 5 | loglevel: _env:LOGLEVEL:info |
| 6 | # Enable debugging (additional informations in the output of the _ping endpoint) |
| 7 | debug: _env:DEBUG:false |
| 8 | # By default, the registry acts standalone (eg: doesn't query the index) |
| 9 | standalone: _env:STANDALONE:true |
| 10 | # The default endpoint to use (if NOT standalone) is index.docker.io |
| 11 | index_endpoint: _env:INDEX_ENDPOINT:https://index.docker.io |
| 12 | # Storage redirect is disabled |
| 13 | storage_redirect: _env:STORAGE_REDIRECT |
| 14 | # Token auth is enabled (if NOT standalone) |
| 15 | disable_token_auth: _env:DISABLE_TOKEN_AUTH |
| 16 | # No priv key |
| 17 | privileged_key: _env:PRIVILEGED_KEY |
| 18 | # No search backend |
| 19 | search_backend: _env:SEARCH_BACKEND |
| 20 | # SQLite search backend |
| 21 | sqlalchemy_index_database: _env:SQLALCHEMY_INDEX_DATABASE:sqlite:////var/docker-registry/docker-registry.db |
| 22 | |
| 23 | # Mirroring is not enabled |
| 24 | mirroring: |
| 25 | source: _env:MIRROR_SOURCE # https://registry-1.docker.io |
| 26 | source_index: _env:MIRROR_SOURCE_INDEX # https://index.docker.io |
| 27 | tags_cache_ttl: _env:MIRROR_TAGS_CACHE_TTL:172800 # seconds |
| 28 | |
| 29 | cache: |
| 30 | host: _env:CACHE_REDIS_HOST |
| 31 | port: _env:CACHE_REDIS_PORT |
| 32 | db: _env:CACHE_REDIS_DB:0 |
| 33 | password: _env:CACHE_REDIS_PASSWORD |
| 34 | |
| 35 | # Enabling LRU cache for small files |
| 36 | # This speeds up read/write on small files |
| 37 | # when using a remote storage backend (like S3). |
| 38 | cache_lru: |
| 39 | host: _env:CACHE_LRU_REDIS_HOST |
| 40 | port: _env:CACHE_LRU_REDIS_PORT |
| 41 | db: _env:CACHE_LRU_REDIS_DB:0 |
| 42 | password: _env:CACHE_LRU_REDIS_PASSWORD |
| 43 | |
| 44 | # Enabling these options makes the Registry send an email on each code Exception |
| 45 | email_exceptions: |
| 46 | smtp_host: _env:SMTP_HOST |
| 47 | smtp_port: _env:SMTP_PORT:25 |
| 48 | smtp_login: _env:SMTP_LOGIN |
| 49 | smtp_password: _env:SMTP_PASSWORD |
| 50 | smtp_secure: _env:SMTP_SECURE:false |
| 51 | from_addr: _env:SMTP_FROM_ADDR:docker-registry@localdomain.local |
| 52 | to_addr: _env:SMTP_TO_ADDR:noise+dockerregistry@localdomain.local |
| 53 | |
| 54 | # Enable bugsnag (set the API key) |
| 55 | bugsnag: _env:BUGSNAG |
| 56 | |
| 57 | # CORS support is not enabled by default |
| 58 | cors: |
| 59 | origins: _env:CORS_ORIGINS |
| 60 | methods: _env:CORS_METHODS |
| 61 | headers: _env:CORS_HEADERS:[Content-Type] |
| 62 | expose_headers: _env:CORS_EXPOSE_HEADERS |
| 63 | supports_credentials: _env:CORS_SUPPORTS_CREDENTIALS |
| 64 | max_age: _env:CORS_MAX_AGE |
| 65 | send_wildcard: _env:CORS_SEND_WILDCARD |
| 66 | always_send: _env:CORS_ALWAYS_SEND |
| 67 | automatic_options: _env:CORS_AUTOMATIC_OPTIONS |
| 68 | vary_header: _env:CORS_VARY_HEADER |
| 69 | resources: _env:CORS_RESOURCES |
| 70 | |
| 71 | local: &local |
| 72 | <<: *common |
| 73 | storage: local |
| 74 | storage_path: _env:STORAGE_PATH:/var/docker-registry |
| 75 | |
| 76 | |
| 77 | s3: &s3 |
| 78 | <<: *common |
| 79 | storage: s3 |
| 80 | s3_region: _env:AWS_REGION |
| 81 | s3_bucket: _env:AWS_BUCKET |
| 82 | boto_bucket: _env:AWS_BUCKET |
| 83 | storage_path: _env:STORAGE_PATH:/registry |
| 84 | s3_encrypt: _env:AWS_ENCRYPT:true |
| 85 | s3_secure: _env:AWS_SECURE:true |
| 86 | s3_access_key: _env:AWS_KEY |
| 87 | s3_secret_key: _env:AWS_SECRET |
| 88 | s3_use_sigv4: _env:AWS_USE_SIGV4 |
| 89 | boto_host: _env:AWS_HOST |
| 90 | boto_port: _env:AWS_PORT |
| 91 | boto_calling_format: _env:AWS_CALLING_FORMAT |
| 92 | |
| 93 | cloudfronts3: &cloudfronts3 |
| 94 | <<: *s3 |
| 95 | cloudfront: |
| 96 | base: _env:CF_BASE_URL |
| 97 | keyid: _env:CF_KEYID |
| 98 | keysecret: _env:CF_KEYSECRET |
| 99 | |
| 100 | azureblob: &azureblob |
| 101 | <<: *common |
| 102 | storage: azureblob |
| 103 | azure_storage_account_name: _env:AZURE_STORAGE_ACCOUNT_NAME |
| 104 | azure_storage_account_key: _env:AZURE_STORAGE_ACCOUNT_KEY |
| 105 | azure_storage_container: _env:AZURE_STORAGE_CONTAINER:registry |
| 106 | azure_use_https: _env:AZURE_USE_HTTPS:true |
| 107 | |
| 108 | # Ceph Object Gateway Configuration |
| 109 | # See http://ceph.com/docs/master/radosgw/ for details on installing this service. |
| 110 | ceph-s3: &ceph-s3 |
| 111 | <<: *common |
| 112 | storage: s3 |
| 113 | s3_region: ~ |
| 114 | s3_bucket: _env:AWS_BUCKET |
| 115 | s3_encrypt: _env:AWS_ENCRYPT:false |
| 116 | s3_secure: _env:AWS_SECURE:false |
| 117 | storage_path: _env:STORAGE_PATH:/registry |
| 118 | s3_access_key: _env:AWS_KEY |
| 119 | s3_secret_key: _env:AWS_SECRET |
| 120 | boto_bucket: _env:AWS_BUCKET |
| 121 | boto_host: _env:AWS_HOST |
| 122 | boto_port: _env:AWS_PORT |
| 123 | boto_debug: _env:AWS_DEBUG:0 |
| 124 | boto_calling_format: _env:AWS_CALLING_FORMAT |
| 125 | |
| 126 | # Google Cloud Storage Configuration |
| 127 | # See: |
| 128 | # https://developers.google.com/storage/docs/reference/v1/getting-startedv1#keys |
| 129 | # for details on access and secret keys. |
| 130 | gcs: |
| 131 | <<: *common |
| 132 | storage: gcs |
| 133 | boto_bucket: _env:GCS_BUCKET |
| 134 | storage_path: _env:STORAGE_PATH:/registry |
| 135 | gs_secure: _env:GCS_SECURE:true |
| 136 | gs_access_key: _env:GCS_KEY |
| 137 | gs_secret_key: _env:GCS_SECRET |
| 138 | # OAuth 2.0 authentication with the storage. |
| 139 | # oauth2 can be set to true or false. If it is set to true, gs_access_key, |
| 140 | # gs_secret_key and gs_secure are not needed. |
| 141 | # Client ID and Client Secret must be set into OAUTH2_CLIENT_ID and |
| 142 | # OAUTH2_CLIENT_SECRET environment variables. |
| 143 | # See: https://developers.google.com/accounts/docs/OAuth2. |
| 144 | oauth2: _env:GCS_OAUTH2:false |
| 145 | |
| 146 | # This flavor is for storing images in Openstack Swift |
| 147 | swift: &swift |
| 148 | <<: *common |
| 149 | storage: swift |
| 150 | storage_path: _env:STORAGE_PATH:/registry |
| 151 | # keystone authorization |
| 152 | swift_authurl: _env:OS_AUTH_URL |
| 153 | swift_container: _env:OS_CONTAINER |
| 154 | swift_user: _env:OS_USERNAME |
| 155 | swift_password: _env:OS_PASSWORD |
| 156 | swift_tenant_name: _env:OS_TENANT_NAME |
| 157 | swift_region_name: _env:OS_REGION_NAME |
| 158 | |
| 159 | # This flavor stores the images in Glance (to integrate with openstack) |
| 160 | # See also: https://github.com/docker/openstack-docker |
| 161 | glance: &glance |
| 162 | <<: *common |
| 163 | storage: glance |
| 164 | storage_alternate: _env:GLANCE_STORAGE_ALTERNATE:file |
| 165 | storage_path: _env:STORAGE_PATH:/var/docker-registry |
| 166 | |
| 167 | openstack: |
| 168 | <<: *glance |
| 169 | |
| 170 | # This flavor stores the images in Glance (to integrate with openstack) |
| 171 | # and tags in Swift. |
| 172 | glance-swift: &glance-swift |
| 173 | <<: *swift |
| 174 | storage: glance |
| 175 | storage_alternate: swift |
| 176 | |
| 177 | openstack-swift: |
| 178 | <<: *glance-swift |
| 179 | |
| 180 | elliptics: |
| 181 | <<: *common |
| 182 | storage: elliptics |
| 183 | elliptics_nodes: _env:ELLIPTICS_NODES |
| 184 | elliptics_wait_timeout: _env:ELLIPTICS_WAIT_TIMEOUT:60 |
| 185 | elliptics_check_timeout: _env:ELLIPTICS_CHECK_TIMEOUT:60 |
| 186 | elliptics_io_thread_num: _env:ELLIPTICS_IO_THREAD_NUM:2 |
| 187 | elliptics_net_thread_num: _env:ELLIPTICS_NET_THREAD_NUM:2 |
| 188 | elliptics_nonblocking_io_thread_num: _env:ELLIPTICS_NONBLOCKING_IO_THREAD_NUM:2 |
| 189 | elliptics_groups: _env:ELLIPTICS_GROUPS |
| 190 | elliptics_verbosity: _env:ELLIPTICS_VERBOSITY:4 |
| 191 | elliptics_logfile: _env:ELLIPTICS_LOGFILE:/dev/stderr |
| 192 | elliptics_addr_family: _env:ELLIPTICS_ADDR_FAMILY:2 |
| 193 | |
| 194 | # This flavor stores the images in Aliyun OSS |
| 195 | # See: |
| 196 | # https://i.aliyun.com/access_key/ |
| 197 | # for details on access and secret keys. |
| 198 | oss: &oss |
| 199 | <<: *common |
| 200 | storage: oss |
| 201 | storage_path: _env:STORAGE_PATH:/registry/ |
| 202 | oss_host: _env:OSS_HOST |
| 203 | oss_bucket: _env:OSS_BUCKET |
| 204 | oss_accessid: _env:OSS_KEY |
| 205 | oss_accesskey: _env:OSS_SECRET |
| 206 | |
| 207 | |
| 208 | |
| 209 | # This is the default configuration when no flavor is specified |
| 210 | dev: &dev |
| 211 | <<: *local |
| 212 | loglevel: _env:LOGLEVEL:debug |
| 213 | debug: _env:DEBUG:true |
| 214 | search_backend: _env:SEARCH_BACKEND:sqlalchemy |
| 215 | |
| 216 | # This flavor is used by unit tests |
| 217 | test: |
| 218 | <<: *dev |
| 219 | index_endpoint: https://registry-stage.hub.docker.com |
| 220 | standalone: true |
| 221 | storage_path: _env:STORAGE_PATH:./tmp/test |
| 222 | |
| 223 | # To specify another flavor, set the environment variable SETTINGS_FLAVOR |
| 224 | # $ export SETTINGS_FLAVOR=prod |
| 225 | prod: |
| 226 | <<: *s3 |
| 227 | storage_path: _env:STORAGE_PATH:/prod |
| 228 | |