{"id":47009407,"url":"https://github.com/internetee/docker-images","last_synced_at":"2026-03-11T20:39:54.528Z","repository":{"id":44790684,"uuid":"137359600","full_name":"internetee/docker-images","owner":"internetee","description":"Collection of Docker images used for local development","archived":false,"fork":false,"pushed_at":"2025-07-03T08:18:44.000Z","size":3167,"stargazers_count":0,"open_issues_count":7,"forks_count":1,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-07-03T09:26:27.108Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Dockerfile","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/internetee.png","metadata":{"files":{"readme":"README.MD","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-06-14T13:08:27.000Z","updated_at":"2024-09-18T12:47:17.000Z","dependencies_parsed_at":"2024-07-17T15:21:54.499Z","dependency_job_id":"be5b4b83-6468-4ce1-bca1-ecb537142bae","html_url":"https://github.com/internetee/docker-images","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/internetee/docker-images","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internetee%2Fdocker-images","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internetee%2Fdocker-images/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internetee%2Fdocker-images/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internetee%2Fdocker-images/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/internetee","download_url":"https://codeload.github.com/internetee/docker-images/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/internetee%2Fdocker-images/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30399657,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-11T18:46:22.935Z","status":"ssl_error","status_checked_at":"2026-03-11T18:46:17.045Z","response_time":84,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-03-11T20:39:53.949Z","updated_at":"2026-03-11T20:39:54.521Z","avatar_url":"https://github.com/internetee.png","language":"Dockerfile","readme":"# Docker configuration for internet.ee projects\n\nThis repository provides a semi-automated way of setting up local development\nenvironment for the following projects:\n\n  * [Registry](https://github.com/internetee/registry)\n  * [Rest WHOIS](https://github.com/internetee/rest-whois)\n  * [WHOIS](https://github.com/internetee/whois)\n  * [Auction Center](https://github.com/internetee/auction_center)\n  * [EPP Proxy](https://github.com/internetee/epp_proxy)\n\n## Design\n\nThe setup includes one nginx server acting as reverse proxy, 1 REST WHOIS\nserver, 1 registry instance serving EPP requests and 1 registry server serving\nall portals interface. Ruby projects are running Puma servers.\n\nPostgres instance persists its data in a dedicated volume, which is NOT deleted\nwith `docker-compose down`.\n\nAll services run on *.test domain, and are available via HTTPS. Use a tool like\n[dnsmasq](https://www.stevenrombauts.be/2018/01/use-dnsmasq-instead-of-etc-hosts/) to redirect *.test domains to 127.0.0.1.\n\nThe following vhosts work on Chrome, Firefox and Safari:\n  * registry.test\n  * rest-whois.test\n  * auction.test\n  * registrar.test\n\nAdditionally, whois works on port 43 on localhost, and EPP is exposed on 700 port.\n\n## Pre-requirements\n\nTo get started, you need:\n\n  * Docker\n  * Internet.ee projects in specific folders, relative to this folder:\n    ```\n    .\n    +-- docker-images (You are here)\n    +-- registry (clone of https://github.com/internetee/registry)\n    +-- rest-whois (clone of https://github.com/internetee/rest-whois)\n    ```\n\n\n## Setup\n\nSetup of the project consists of four steps steps. The projects should work with\nout of the box configuration for both `config/application-example.yml` and\n`config/database-example.yml`. Small changes that are described below are\nneeded for certificates and setup of EPP/REST API.\n\n### Build docker images\n\nIn the project root, run the following command:\n\n```bash\n$ docker-compose build\n```\n\n__NB!__ Containers need to be rebuilt every time there is an update to the\ngemfile.\n\n### Fire up docker-compose project\n\nSince multiple configuration files are already using container-based paths, we need to boot up our project beforehand to address these paths.\n\nIn the project root, run the following command:\n\n```bash\n$ docker-compose up -d\n```\n\nThis command will start all containers defined in docker-compose configuration file. You will see some errors from docker logs, but don't worry, they're expected.\n\n### Connect to active registry container\n\nSince openssl.cnf is based on paths used in container itself, we need to generate certificates inside container environment.\n\nIn the project root, run the following command:\n\n```bash\n$ docker ps\n```\n\nMark down any `CONTAINER ID` which is running `registry` image.\n```\n$ docker ps\nCONTAINER ID        IMAGE\n2b13fa1fe93c        auction_center\n**d4077e3a2e1c** \u003c\u003c THIS ONE        registry\nb0934102c7a6        auction_center\n**48e8e38d2059** \u003c\u003c OR THIS ONE       registry\n9b6e13696d01        epp_proxy\n7efc7918ecf0        internetee/httpd_epp:2.2\n54a6e24954d6        postgres:9.4\n\n```\n\nNow, let's connect to registry container via:\n\n```bash\n$ docker exec -ti \u003cCONTAINER ID\u003e /bin/bash\n```\nor\n```bash\n$ docker-compose run registry bash\n```\n\nGreat, we're inside container now.\n\n### Setup root CA\n\nYou will be asked to supply a password and certain certificate details, such as\ncommon name. Remember the password, as you'll be required to supply it at\nvarious points in time for generation of other certificates. The root CA, and\nall the certificates are valid for 1 year only.\n\nNow, while connected to `registry` container, run this:\n\n  ```bash\n  $ cd /opt/ca\n  $ ./prepare_root_ca.sh\n  ```\n\nBy docker-compose, our main host `shared/ca` is mirrored to container env's `/opt/ca` path. These directories are shared.\n\nNow, on different terminal tab, on main host, add the newly generated certificates from `shared/ca/ca.crt.pem` certificate to\nyour trusted chains, and enable trust for SSL communication. If you are using a\nMacOS computer, just drop the certificate file to login keychain in Keychain\nAccess.\n\n__NB!__ Trusting a self generated certificate is generally a security risk, so\nmake sure that you're the only person with the access to this root ca and do not\ncommit it to any kind of source code repository.\n\nIf you already have a certificate like that from a different project, you can\njust drop the files to the required locations:\n\n  * key to `shared/ca/private/ca.key.pem`\n  * certificate to `shared/ca/certs/ca.cert.pem`\n\nThen, move on to generating certificates reqired by application.\n\n### Setup application certificates\n\nAs in previous step, run following commands inside container environment. You will be asked for your root CA password multiple times.\n\n  ```bash\n  $ cd /opt/ca\n  $ ./generate_certificates.sh\n  ```\n\nWhen asked, set common name to `localhost` in the CSR:\n\n```bash\nCountry Name (2 letter code) [EE]:\nState or Province Name (full name) [Harjumaa]:\nLocality Name (eg, city) [Tallinn]:\nOrganization Name (eg, company) [Eesti Interneti Sihtasutus]:\nOrganizational Unit Name (eg, section) []:\nCommon Name (e.g. server FQDN or YOUR name) []:localhost\nEmail Address [hello@internet.ee]:\n```\n\nSign the CSR and commit the certificate:\n\n```\nCertificate Details:\n        Serial Number: 4096 (0x1000)\n        Validity\n            Not Before: Jun 14 12:44:30 2018 GMT\n            Not After : Jun 14 12:44:30 2019 GMT\n        Subject:\n            countryName               = EE\n            stateOrProvinceName       = Harjumaa\n            organizationName          = Eesti Interneti Sihtasutus\n            commonName                = localhost\n            emailAddress              = hello@internet.ee\n        X509v3 extensions:\n            X509v3 Basic Constraints:\n                CA:FALSE\n            X509v3 Key Usage:\n                Digital Signature, Non Repudiation, Key Encipherment\n            Netscape Comment:\n                OpenSSL Generated Certificate\n            X509v3 Subject Key Identifier:\n                37:8F:5C:6B:42:41:7F:66:0C:50:88:61:AA:AE:F6:51:EF:29:3C:3C\n            X509v3 Authority Key Identifier:\n                keyid:49:2D:98:38:1F:27:8E:B1:D6:6C:F0:A5:2E:8D:14:15:59:8E:3A:42\n\nCertificate is to be certified until Jun 14 12:44:30 2019 GMT (365 days)\nSign the certificate? [y/n]:\n1 out of 1 certificate requests certified, commit? [y/n]y\n```\n\nWe've generated our required certificates now. Feel free to close container connection.\n\nLet's shut down our composed project now via `docker-compose down` for now.\n\n### Configure registry `config/application.yml`\n\nPut the following values in Registry project's `config/application.yml` file:\n\n```yaml\napp_name: '.EE Registry'\n\nopenssl_config_path: '/opt/ca/openssl.cnf'\ncrl_dir:     '/opt/ca/crl'\ncrl_path:     '/opt/ca/crl/crl.pem'\nca_cert_path: '/opt/ca/certs/ca.crt.pem'\nca_key_path:  '/opt/ca/private/ca.key.pem'\nca_key_password: # your password\n\nwebclient_ips: '127.0.0.1'\nwebclient_cert_common_name: 'localhost'\nepp_port: '700'\ncert_path: '/opt/ca/certs/webclient.crt.pem'\nkey_path: '/opt/ca/private/webclient.key.pem'\nepp_hostname: 'epp_proxy'\nrepp_url: 'http://epp:3000/repp/v1/'\n\naction_mailer_default_host: 'registry.test'\naction_mailer_default_from: 'no-reply@example.com'\n\nsecret_key_base: 'please-change-it-you-can-generate-it-with-rake-secret'\ndevise_secret: 'please-change-it-you-can-generate-it-with-rake-secret'\ntime_zone: 'Tallinn'\n```\n\nRename config/environments/development.rb.sample to development.rb\n\nchange this line from false to true\n\n```rb\nconfig.action_mailer.raise_delivery_errors = true\n```\n\nand comment this line\n\n```rb\nconfig.file_watcher = ActiveSupport::EventedFileUpdateChecker\n```\n\n\n### Configure REST-Whois\nRename application-example.yml to application.yml\n\nIn application.yml added\n```yaml\nrecaptcha_site_key: 6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI\nrecaptcha_secret_key: 6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe\n```\n\nRename database-example.yml to database.yml\n\n### Configure whois database\n\nWhois database does not work well with environment variables, so you can instead\nhard code a working docker setup in `config/database.yml`:\n\n```yaml\ndefault: \u0026default\n  adapter: postgresql\n  encoding: unicode\n  pool: 5\n  host: db\n  username: postgres\n  password:\n```\n\n### Configure Auction Center\nRename customization.yml.sample to customization.yml\n\nRename database.yml.sample to database.yml\n\n### Configure epp-proxy sys.config\n\n```yaml\n%% Path to root CA that should check the client certificates.\n{cacertfile_path, \"/opt/ca/certs/ca.crt.pem\"},\n\n```\n### /etc/hosts\n\nAdded to /etc/hosts\n\n```127.0.0.1       auction.test\n127.0.0.1       rest-whois.test\n127.0.0.1       whois.test\n127.0.0.1       registry.test\n127.0.0.1       epp.test\n127.0.0.1       registrar.test\n127.0.0.1       registrant.test\n```\n\n### Build docker images again\n\nIn the project root, run the following commands:\n\n```bash\n$ docker-compose build\n```\n\n### Setup databases\n\nAssuming you're going to set up registry as development, rename `config/database_development.yml.sample` to `config/database.yml`\n\nModify `default` block to look like as follow:\n\n```\ndefault: \u0026default\n  adapter: postgresql\n  encoding: unicode\n  pool: \u003c%= ENV.fetch(\"APP_DB_MAX_THREADS\") { 5 } %\u003e\n  host: \u003c%= ENV.fetch(\"APP_DBHOST\") { \"localhost\" } %\u003e\n  username: \u003c%= ENV.fetch(\"APP_DBUSER\") { \"postgres\" } %\u003e\n  password:\n\n```\nDone? Great. Let's initialize our databases.\n\n```bash\n$ docker-compose run registry bundle exec rake db:setup:all\n$ docker-compose run rest-whois bundle exec rake db:setup\n$ docker-compose run auction_center bundle exec rake db:setup\n```\n\nIf an error with repp_logs and epp_logs occurs when running tests in the registry, try running the following command:\n```\ndocker-compose run registry bundle exec rake db:schema:load:all\n```\n\n__NB!__ On first run, the commands above might fail due to the database\ncontainer not being yet ready.\n\n### Connecting to database server\n\nIf you need to connect to postgres container, it is exposed to localhost on port\n5433, with default username being `postgres` and no password.\n\n```bash\n$ psql -p 5433 -U postgres -h localhost\n```\n\n\n## Useful commands\n\nBelow you will find a list of useful and frequently used docker commands:\n\n  * `docker exec -it $container_name_number /bin/bash` Opens bash in a running\n  container, so you can run `rake test`, `rake db:migrate` or other commands on\n  the codebase.\n  * `docker image prune` Removes dangling images to save you some SSD space.\n  * `docker attach $container_name_number` Attaches to a running container,\n  useful if you have pry breakpoint somewhere in your code. To deatach\n  without stopping the container, press `CTRL+P, CTRL+Q`.\n  * `docker volume rm docker-images_pg` Removes the postgres docker image.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finternetee%2Fdocker-images","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finternetee%2Fdocker-images","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finternetee%2Fdocker-images/lists"}