Browse Source

added docker-compose.yml; readme: run via docker-compose

Fabian Peter Hammerle 5 years ago
parent
commit
ace236b7e7
2 changed files with 42 additions and 21 deletions
  1. 5 21
      README.md
  2. 37 0
      docker-compose.yml

+ 5 - 21
README.md

@@ -4,31 +4,15 @@ docker hub: https://hub.docker.com/r/fphammerle/koel/
 
 dockerfile repo: https://git.hammerle.me/fphammerle/docker-koel
 
+docker-compose.yml: https://git.hammerle.me/fphammerle/docker-koel/src/master/docker-compose.yml
+
 koel project repo: https://github.com/phanan/koel
 
-https://koel.phanan.net/docs
+koel docs: https://koel.phanan.net/docs
 
 ```sh
-$ sudo docker network create koel
-$ sudo docker create \
-    --name koel-db \
-    --env POSTGRES_DB=koel \
-    --env POSTGRES_USER=koel \
-    --env POSTGRES_PASSWORD=secret \
-    --network koel --security-opt=no-new-privileges \
-    --cap-drop=all --cap-add=chown --cap-add=setuid --cap-add=setgid --cap-add=fowner \
-    postgres:10.5-alpine
-$ sudo docker start koel-db
-$ sudo docker run --rm --interactive --tty \
-    --name koel \
-    --env DB_CONNECTION=pgsql \
-    --env DB_HOST=koel-db \
-    --env DB_PORT=5432 \
-    --env DB_DATABASE=koel \
-    --env DB_PASSWORD=secret \
-    --network koel --publish=8080:8080 \
-    --security-opt=no-new-privileges --cap-drop=all \
-    fphammerle/koel:3.7.2-amd64
+$ sudo docker-compose --project-name koel run web
+Starting koel_db_1 ... done
 + php artisan koel:init
 Attempting to install or upgrade Koel.
 Remember, you can always install/upgrade manually following the guide here:

+ 37 - 0
docker-compose.yml

@@ -0,0 +1,37 @@
+# https://docs.docker.com/compose/compose-file/compose-file-v2/
+
+# [...] By default, every container joins an application-wide default network,
+# and is discoverable at a hostname that’s the same as the service name. [...]
+
+version: '2.1'
+services:
+  db:
+    image: postgres:10.5-alpine
+    environment:
+      POSTGRES_DB: koel
+      POSTGRES_USER: koel
+      POSTGRES_PASSWORD: secret
+    # WORKAROUND cannot whitelist required caps [chown, setuid, setgid, fowner]
+    cap_drop: [setpcap, mknod, audit_write, net_raw, fsetid,
+               kill, net_bind_service, sys_chroot, setfcap]
+    # --security-opt=no-new-privileges
+    # https://docs.docker.com/engine/reference/builder/#healthcheck
+    # https://github.com/docker-library/healthcheck/blob/master/postgres/docker-healthcheck
+    healthcheck:
+      test: echo 'SELECT 1' | psql --username koel --dbname koel || exit 1
+    restart: unless-stopped
+  web:
+    image: fphammerle/koel:3.7.2-amd64
+    environment:
+      DB_CONNECTION: pgsql
+      DB_HOST: db
+      DB_PORT: 5432
+      DB_DATABASE: koel
+      DB_PASSWORD: secret
+    ports: ['8080:8080']
+    cap_drop: [all]
+    # --security-opt=no-new-privileges
+    # v3 no longer supports the condition form of depends_on
+    depends_on:
+      db: {condition: service_healthy}
+    restart: unless-stopped