-
Notifications
You must be signed in to change notification settings - Fork 260
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Docker #435
Conversation
Running |
@stardust66 I referred to https://stackoverflow.com/questions/38089999/docker-compose-rails-best-practice-to-migrate, where someone suggests using an entrypoint to run the migration. Unfortunately, it has to happen every time, but I think that's kind of just a docker way of doing things. |
I'm crying, this is so much easier |
Hey, I think we can avoid this problem altogether by not running |
|
|
||
### 6 Assets | ||
### 6 Optional tasks: |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@tkwidmer do we need this anymore? I feel if we do, it might not belong in this doc
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not sure if we still need this. The seed has been reduced to a small sample set rather than a larger set that it used to be. So we may not need this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm going to delete since in my past 3.5 years of working on this I've never done this. It might just be confusing to a newcomer
apt-get install libfreetype6 libfreetype6-dev -y && \ | ||
apt-get install libfontconfig1 libfontconfig1-dev -y && \ | ||
cd ~ && \ | ||
export PHANTOM_JS="phantomjs-2.1.1-linux-x86_64" && \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
just reminding myself this should be $PANTOM_JS not 2.1.1
I think the rails server leaves a My workaround is to mount an empty volume at
This makes the tmp folder in the container initially empty. Thus, no @mi-wood Do you see any downsides to this? |
@stardust66 I'd probably rather just seed the DB every time than implement a workaround and have people use |
Okay. That makes sense. |
Going to go ahead and merge this, so I don't have to cherry pick around other branches to use it |
👍 |
This reverts commit 5876b6a.
This reverts commit 5876b6a. Restores Vagrant files and configurations. Probably.
This reverts commit 5876b6a. (Restores Vagrant configuration as an alternative to Docker.)
This reverts commit 5876b6a. (Restores Vagrant configuration as an alternative to Docker.)
This reverts commit 5876b6a. (Restores Vagrant configuration as an alternative to Docker.)
* add docker configs * remove vagrant * remove more vagrant * update docs * attempt to use travis... * use compose * add docs for forking project * update contributing docs * add db:create and db:migrate as entrypoint * update docs
(Big old squashed commit) Squashed commit of the following: commit 0bd0380 Author: DeeDeeG <[email protected]> Date: Fri Oct 5 20:15:23 2018 -0400 setup_vagrant: Remove unnecessary packages Delete section of unnecessary package installation. Does not impact functionality of installation. commit 2269ce0 Author: DeeDeeG <[email protected]> Date: Fri Oct 5 19:29:25 2018 -0400 setup_vagrant.sh: Idempotentialize PhantomJS config Only try to install and configure PhantomJS if there is no phantomjs directory in /usr/local/bin. commit f54773c Author: DeeDeeG <[email protected]> Date: Fri Oct 5 19:23:03 2018 -0400 Revert "setup_vagrant.sh: Install phantomjs via APT" This reverts commit ba85fa3. The APT package from the Ubuntu repository has too many heavy dependencies. Install just the custom-packaged version. commit 262a45b Author: DeeDeeG <[email protected]> Date: Fri Oct 5 18:53:17 2018 -0400 setup_vagrant.sh: Move nodejs package install Use the idempotent apt installer subscript to install nodejs. commit f5d9e1c Author: DeeDeeG <[email protected]> Date: Fri Oct 5 18:50:15 2018 -0400 setup_vagrant.sh: Idempotentialize Node.js config Only try to configure Node.js repo andother settings if there is no nodesource.list in /etc/apt/sources.list.d/ commit 54217ad Author: DeeDeeG <[email protected]> Date: Fri Oct 5 18:45:17 2018 -0400 setup_vagrant.sh: Idempotentialize Yarn repo Don't try to add the repo again if yarn.list already exists in `/etc/apt/sources.list.d`. (Is "idempotentialize" a word?) commit 47a9cde Author: DeeDeeG <[email protected]> Date: Fri Oct 5 18:30:40 2018 -0400 setup_vagrant.sh: Install Yarn idempotently Use the nice APT idempotent package installer subscript to install Yarn. Neatens up the script, saves time when re-provisioning. commit ba85fa3 Author: DeeDeeG <[email protected]> Date: Fri Oct 5 18:28:24 2018 -0400 setup_vagrant.sh: Install phantomjs via APT Uses the package from the Ubuntu Bionic repositories, instead of custom-installing. commit 6563c04 Author: DeeDeeG <[email protected]> Date: Fri Oct 5 18:24:25 2018 -0400 setup_vagrant.sh: cleanup top of script Rearranges package installations under their own headers. Much more readable this way. commit a404866 Author: DeeDeeG <[email protected]> Date: Fri Oct 5 17:50:31 2018 -0400 Use rvm instead of rbenv and ruby-build Change setup_vagrant.sh from downloading and compiling ruby with rbenv to simply downloading and installing RVM's binary of ruby. commit 5aafb18 Author: DeeDeeG <[email protected]> Date: Fri Oct 5 00:31:30 2018 -0400 Bump Vagrant setup to 18.04 Bionic We need to do this because: 1) Trusty will be end-of-service soon 2) rvm does not have latest ruby binaries for Trusty commit 63bd486 Author: DeeDeeG <[email protected]> Date: Thu Oct 4 21:40:52 2018 -0400 Un-pin bundler; just download the latest version Vagrant stopped using bundler internally in late 2016. See: https://github.com/hashicorp/vagrant/commits/master/vagrant.gemspec And these two commits: 4 Jan 2014, Vagrant begins to use bundler internally: hashicorp/vagrant@f2c6175 5 Sep 2016, Vagrant drops its internal dependency on bundler: hashicorp/vagrant@1fb4553 commit a411369 Author: DeeDeeG <[email protected]> Date: Thu Oct 4 21:32:06 2018 -0400 Revert "Docker (RefugeRestrooms#435)" This reverts commit 5876b6a. (Restores Vagrant configuration as an alternative to Docker.)
* add docker configs * remove vagrant * remove more vagrant * update docs * attempt to use travis... * use compose * add docs for forking project * update contributing docs * add db:create and db:migrate as entrypoint * update docs
GitHub's CDN is more reliable than BitBucket's. (This is the URL we originally used as of PR RefugeRestrooms#435, which was the initial implementation of our Docker setup.)
* Dockerfile: Use better PhantomJS URL GitHub's CDN is more reliable than BitBucket's. (This is the URL we originally used as of PR #435, which was the initial implementation of our Docker setup.) * docker-compose.yml: Add password for PostgreSQL db This is in response to a recent change in the PostgreSQL Docker image. Either the database must be configured to not check passwords, i.e. `POSTGRESQL_HOST_AUTH_METHOD=trust`, or a password must now be set. For explanation and context, see: - docker-library/postgres#658 - docker-library/postgres#681 - docker-library/postgres#580 - https://discuss.circleci.com/t/postgresql-image-password-not-specified-issue/34555
Squashed commit of the following: commit a3ba4b7 Author: DeeDeeG <[email protected]> Date: Fri Apr 3 22:10:09 2020 -0400 Update Node.JS and Ruby Dependencies (#617) * Gemfile[.lock]: Update rails to 5.2.4.2 Also update its dependencies, as required. * Gemfile[.lock]: Update grape and grape-swagger Also update their dependencies, as needed. * Gemfile[.lock]: Update activeadmin * Gemfile: Pin sprockets to "< 4" The 4.x major version upgrade requires some configuration changes. Pinning keeps the app from breaking when doing `bundle update`. * Gemfile.lock: Update all packages * yarn.lock: Update all packages commit 15fe9f7 Author: DeeDeeG <[email protected]> Date: Thu Apr 2 16:02:39 2020 -0400 Ruby: Update from 2.5.7 to 2.5.8 (#618) commit cc9f2a7 Author: DeeDeeG <[email protected]> Date: Tue Mar 17 15:02:57 2020 -0400 Update docker config (#616) * Dockerfile: Use better PhantomJS URL GitHub's CDN is more reliable than BitBucket's. (This is the URL we originally used as of PR #435, which was the initial implementation of our Docker setup.) * docker-compose.yml: Add password for PostgreSQL db This is in response to a recent change in the PostgreSQL Docker image. Either the database must be configured to not check passwords, i.e. `POSTGRESQL_HOST_AUTH_METHOD=trust`, or a password must now be set. For explanation and context, see: - docker-library/postgres#658 - docker-library/postgres#681 - docker-library/postgres#580 - https://discuss.circleci.com/t/postgresql-image-password-not-specified-issue/34555
* db/seeds.rb: Give restroom entries an edit_id (#567) Only applies during development and testing when we use the "db/export.csv" data. Doesn't affect production, which uses the real data in its db. * Explain how to run individual tests and access psql (#570) Also, clarify that there are two containers, web and db, rather than just one; these can be viewed using docker ps * Make filter with "focus" class more readable * Remove unused li * Allow dropdown menu text to wrap and fit within the dropdown Add border bottom to give each menu item more separation * yarn.lock: Update jquery (#587) * Dockerfile: Update and streamline steps (#586) Does effectively the same things as before, but now in a simpler/faster way. Some of the changes take inspiration from @btyy77c's dockerAlpine branch: https://github.com/btyy77c/refugerestrooms/blob/dockerAlpine/Dockerfile The PhantomJS install is based on (mostly copy-pasted from) @nkovacs' phantomjs image from Docker Hub: https://github.com/nkovacs/selenium-standalone-phantomjs/blob/c5f6bba218472270/Dockerfile#L19-L22 * Dockerfile: Get latest Node.js in a major version (#589) (Also installs Node.js in /usr/local/ instead of installing Node.js in the root directory.) With this updated script, we specify just a major version and the script picks the latest minor/patch version within that. -- Nodejs.org does most of the work by maintaining the "latest-v[MAJOR]" folders; We only need to parse the "SHASUMS256.txt" file from there, and pick the "linux-x64" variant, which works with our Docker setup. At this point we can use the known directory URL, plus the filename extracted from "SHASUMS256.txt", and download with curl, or wget, etc. (e.g. "curl -L https://nodejs.org/dist/latest-v10.x/node-v10.16.0-linux-x64.tar.xz -o nodejs.tar.xz") -- There is no "latest-LTS" folder or similar, so automatically getting the latest LTS version would be more difficult. We could search "nodejs.org/dist/" for folders with the name "latest-[LETTERS-ONLY-STRING]", which would be the folders of all the LTS codenames. Among these, the one with the alphabetically last name is the latest LTS. This would work at least until around 2040, when they may have to loop around and re-use some earlier letters (a, b, c, etc.) * Update Node.js and Ruby dependencies (#590) * yarn.lock: Update Node.js packages * Gemfile.lock: Update gems * Add Bugsnag to readme To fufill the open source agreement, we have to link to bugsnag now in our readme. * .travis.yml: Use minimal base image for Travis CI We do all the setup/build steps inside a Docker container, so we don't need ruby tools outside of Docker (on the Travis CI virtual machine instances). Should save about 20 seconds of Travis CI build time. -- Inspired by @btyy77c who did this first at their dockerAlpine branch: - btyy77c@393cf46 Documentation at Travis re: minimal/generic images: - https://docs.travis-ci.com/user/languages/minimal-and-generic/ * docker-compose.yml: Use postgresql:alpine image This (the Alpine Linux-based postgresql image) is a smaller image than the debian-based postgresql image, so it should be marginally faster to download. Seems like a good idea in general, to speed up build times (even outside of Travis CI). Also should save some disk space for developers. -- Inspired by the general concept of @btyy77c's dockerAlpine branch: - https://github.com/btyy77c/refugerestrooms/commits/dockerAlpine Docker Hub documentation on the alpine vs debian postgres images: - https://hub.docker.com/_/postgres#image-variants * layouts/_footer.html.haml: Remove tumblr link * stylesheets/.../common: Remove tumblr icon stlye * en/footer.en.yml: Remove string for tumblr blog This isn't needed anymore, since we have removed the tumblr link from the footer. * removed tumblr from about page (#593) I noticed we were removing tumblr, here's one more instance * Create about.fil.yml (#465) * Filipino Translation devise.fil.yml (#454) * Create devise.fil.yml * Update devise.fil.yml * Update for devise.fil.yml @100% Translation * Update and rename devise.fil.yml to devise.fl.yml * Update and rename devise.fl.yml to devise.fil.yml * 100% completed for restroom.fil.yml file (#467) * Create restroom.fil.yml * Translations for EN to FIL Issue 451 (#556) Translated files from EN to FIL #451 * config/locales/fil/: Remove tumblr See #592 and #593 * Updated filipino translations * switched sass-rails gem (#595) * switched sass-rails gem (sass-rails --> sassc-rails) * Changed the word `restroom` to `banyo` to be mroe understandable to most Filipinos * Fixed some unnoticed words that needed some changes in translation * additional translation changes * config/application.rb: Add 'fil' locale (Filipino) Enables translations as merged in #596 * .travis.yml: Set "dist" to "trusty" (#600) Should allow our CI tests to pass while we investigate test failures on xenial and newer. * production.rb: Fix i18n.fallbacks deprecation warn * config/application.rb: Add Tagalog (:tl) locale * production.rb: I18n fallbacks for :tl --> :fil We don't maintain separate translations for "Tagalog" and Filipino, since they are arguably the same language. However, Firefox only allows users to set "Tagalog" as preferred, and Chrome only allows users to set "Filipino" as preferred. To support both browsers, we must support both the "Tagalog" and the "Filipino" locales. (These locales use the "tl" and "fil" locale codes, respectively.) * config/application.rb: Set default locale to "en" * package.json: Update swagger to master with patch * yarn.lock: Commit updated (indirect) dependencies * yarn.lock: Update all packages * Gemfile[.lock]: Update devise, simple_form * yarn.lock: Upgrade swagger-ui's dependencies * Ruby: Upgrade from 2.5.3 to 2.5.7 * Dockerfile: Work around an issue with phantomjs When running the tests, cliver tries to check that PhantomJS's version is within a certain range, by running "phantomjs --version". The "phantomjs --version" command fails for some reason on the new ruby:2.5.7-slim Docker base image. Perhaps because the new Docker image is based on Debian 10 "Buster," whereas the old Docker image was based on Debian 9 "Stretch"? This commit's workaround allows "phantomjs --version" to work again. * Fix Travis tests failing on distributions other than trusty (#606) * Revert ".travis.yml: Set "dist" to "trusty" (#600)" This reverts commit ac8f6ab. Doing this to run tests on Travis to investigate why they aren't passing. * Explicitly require locations.rb in rspec.rb Tentative fix for tests not passing in xenial but passing in trusty. This might be because different distributions load files in a different order. In xenial, `rspec.rb` might get loaded before `locations.rb`, making `Locations` uninitialized. Explicit require fixes this. * Dockerfile: Upgrade Node from v10.x to v12.x (#603) Node 12 "Erbium" is the newest Long Term Service release. We should either pin a version of Node in our package.json file, or stay on the latest LTS version of Node; Heroku will use the latest LTS version of Node in production if we don't have any versions pinned in our package.json * Webpack Upgrade (#607) * Updated webpacker gem * Upgraded yarn packages * Ran webpack:install process. Working without rails-erb-loader * Added rails-erb-loader to webpack * Fixed include PgSearch warning * Added .dockerignore * PR #607: Minor tweaks/cleanup - Adjust Gemfile[.lock] to specify webpacker within the 4.x series, rather than any version 4.0 or greater. - Delete some duplicate entries in the .gitignore file * CONTRIBUTING.md: Remove the reference to "Cmd + C" The "Cmd + C" keyboard shortcut is for copying text, not quitting programs in the terminal. The proper way to quit programs in the terminal under macOS is "Ctrl + C", the same as Linux. Referring to "Cmd + C" here was based on a mistaken assumption that "Ctrl" on Windows or Linux always gets translated to "Cmd" on macOS. (In fact, some uses of "Ctrl" on Windows/Linux are preserved as-is on macOS. It's a mixed bag.) Deleting the reference to "Ctrl + C", to make the guidance clearer. * db/schema.rb: Commit with underscores in date The date gets underscores added automatically when running migrations on the database. Committing with the underscores so the change isn't flagged by git when no code has been changed. * restrooms_spec.rb: Fix a test (#608) Background: The Mission Creek Cafe in San Francisco has been closed for some time. Google Maps API now resolves "Mission Creek Cafe" to a coffee shop in Washington state. Washington is too far away from our stub restroom entries; No stub restrooms are located near Washington, so no restroom results are shown on our results page for this search. The test expects to see a stub restroom entry on the reults page, but does not see it, and so the test fails. --- Fix: search the Maps API for "San Francisco," not "Mission Creek Cafe" (This returns a lat/long associated with San Francisco not Washington) * Update some dependencies, fix some deprecation warnings (#609) * Gemfile[.lock]: Update simplecov Fixes a deprecation warning * restrooms_spec.rb: Use 'successful' not 'success' Rspec's `be_success` and `.success?` are deprecated. Rspec's `be_successful` and `.successful?` are the non-deprecated versions of this check. (This fixes the associated deprecation warning) * Gemfile.lock: Bump some dependencies Upgraded loofah, puma, rack, and rack-cors, plus their dependencies. * Tweak CSS a bit for narrow screens (e.g. mobile phones) (#610) * CSS: Add some styles for narrow screens For screen widths ~340px or narrower. (Such a narrow screen is found, for example, on the original iPhone through to the iPhone 5S and iPhone SE.) - Makes the "+" icon on the "Add A Restroom" button appear in a more correct-looking position. - Fixes the overlap of the "Refuge Restrooms" text with the "hamburger" drop-down menu button in the header/nav section. - Adds a class via the haml source (.nav-column) to make applying one of the style rules easier. * CSS: No double-padding on nested `.container`s Eliminate double-padding in cases of an [element].container immediately inside another [element].container. (Doing this only directly under the header div, just to be conservative.) The 15px + 15px = 30px of padding on both sides seemed unintentionally wide. Also, I think this looks nicer. Helps with the tight fit on mobile devices, too. (Should affect the header/nav on all pages other than the home page, aka the splash page, due to the way the pages are coded.) * CSS: Center logo and brand name on narrow screens (#611) * _mobile.scss: Lower logo/brand on narrow screens Adjust the CSS "top" property to set the logo and "brand name" ("Refuge Restrooms") slightly lower within the navbar on narrow screens. This is to adjust for the navbar being responsively taller on narrower screens. "767px screen width" happens to be the responsive threshold for that height change for the navbar. * _mobile.scss: Move 342px rules, adjust whitespace Moved the "max 342px" rules to the bottom, so all screen-width-related style rules are in descending order of the sizes that they apply to. (For consistency). Adjusted the use of newlines in this stylesheet to be more consitent. * Update docker config (#616) * Dockerfile: Use better PhantomJS URL GitHub's CDN is more reliable than BitBucket's. (This is the URL we originally used as of PR #435, which was the initial implementation of our Docker setup.) * docker-compose.yml: Add password for PostgreSQL db This is in response to a recent change in the PostgreSQL Docker image. Either the database must be configured to not check passwords, i.e. `POSTGRESQL_HOST_AUTH_METHOD=trust`, or a password must now be set. For explanation and context, see: - docker-library/postgres#658 - docker-library/postgres#681 - docker-library/postgres#580 - https://discuss.circleci.com/t/postgresql-image-password-not-specified-issue/34555 * Ruby: Update from 2.5.7 to 2.5.8 (#618) * Update Node.JS and Ruby Dependencies (#617) * Gemfile[.lock]: Update rails to 5.2.4.2 Also update its dependencies, as required. * Gemfile[.lock]: Update grape and grape-swagger Also update their dependencies, as needed. * Gemfile[.lock]: Update activeadmin * Gemfile: Pin sprockets to "< 4" The 4.x major version upgrade requires some configuration changes. Pinning keeps the app from breaking when doing `bundle update`. * Gemfile.lock: Update all packages * yarn.lock: Update all packages * Implement Google's reCAPTCHA (#566) * Add server reCAPTCHA verification for contacts Added a temporary secret key for testing in .env, which is loaded by the dotenv gem. In production, just put another key in the Heroku env variable settings. * Add reCAPTCHA to contacts submission page * Enable browser form validation by default This gets form input validated on the client side, which gives faster feedback to the user, without the need for a custom solution. This feature is supported in all modern browsers. * Add reCAPTCHA to restrooms page * Make stub for reCAPTCHA verification during tests Co-authored-by: Mikena Wood <[email protected]> Co-authored-by: DeeDeeG <[email protected]> Co-authored-by: Kai Middleton <[email protected]> Co-authored-by: hkly <[email protected]> Co-authored-by: Teagan <[email protected]> Co-authored-by: Joe Wadcan <[email protected]> Co-authored-by: vinzruzell <[email protected]> Co-authored-by: hnarasaki <[email protected]> Co-authored-by: Bryan Mark Fajutag <[email protected]> Co-authored-by: Emily Ring <[email protected]> Co-authored-by: Jason Chen <[email protected]>
I'll hunt down any vagrant issues, as this will close them