Forráskód Böngészése

Be very explicit about docker DB env vars

Andrew Swistak 6 éve
szülő
commit
e437bb556d

+ 5 - 1
config/database.yml.docker

@@ -1,6 +1,10 @@
 default: &default
   adapter: postgresql
-  database: <%= ENV["DATABASE_URL"] %>
+  database: <%= ENV["POSTGRES_DB"] %>
+  host: <%= ENV["POSTGRES_HOST"] %>
+  password: <%= ENV["POSTGRES_PASSWORD"] %>
+  port: <%= ENV["POSTGRES_PORT"] %>
+  user: <%= ENV["POSTGRES_USER"] %>
 
 development:
   <<: *default

+ 8 - 4
docker-compose.ci.yml

@@ -6,19 +6,23 @@ services:
       context: .
       target: dev
     depends_on:
-      - db
+      - test_db
       - selenium_firefox
       - selenium_chrome
     environment:
+      - APP_HOST_PORT=3000
+      - POSTGRES_DB=${POSTGRES_DB}_test
+      - POSTGRES_HOST=test_db
+      - POSTGRES_PASSWORD
+      - POSTGRES_PORT=5432
+      - POSTGRES_USER
       - RAILS_ENV=test
-      - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}_test
       - SELENIUM_CHROME_HOST=selenium_chrome
       - SELENIUM_FIREFOX_HOST=selenium_firefox
       - SELENIUM_PORT=4444
-      - APP_HOST_PORT=3000
     working_dir: /app
 
-  db:
+  test_db:
     image: postgres:11.2-alpine
     environment:
       - POSTGRES_DB

+ 5 - 1
docker-compose.yml

@@ -21,7 +21,11 @@ services:
       - db
       - webpack_dev_server
     environment:
-      - DATABASE_URL=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
+      - POSTGRES_DB
+      - POSTGRES_HOST=db
+      - POSTGRES_PASSWORD
+      - POSTGRES_PORT=5432
+      - POSTGRES_USER
       - WEBPACKER_DEV_SERVER_HOST=0.0.0.0
     ports:
       - ${WEB_HOST_PORT}:3000

+ 1 - 6
lib/tasks/db/wait_for_init.rake

@@ -8,12 +8,7 @@ namespace :db do
     require 'socket'
 
     20.times do
-      # postgres://postgres:postgres@db:5432/postgres
-      # we want:                     ^^ ^^^^
-      db_host = ENV['DATABASE_URL'].split(/:|@/)[3]
-      db_port = ENV['DATABASE_URL'].split(/:|@/)[4].to_i
-
-      sock = TCPSocket.new db_host, db_port
+      sock = TCPSocket.new ENV['POSTGRES_HOST'], ENV['POSTGRES_PORT'].to_i
       sock.close
       break
     rescue StandardError