Skip to content

Instantly share code, notes, and snippets.

@cuken
Forked from joekrill/docker-compose.yml
Last active August 1, 2023 05:50
Show Gist options
  • Save cuken/a6b70e44eba08e7cd5757c0c0a313322 to your computer and use it in GitHub Desktop.
Save cuken/a6b70e44eba08e7cd5757c0c0a313322 to your computer and use it in GitHub Desktop.
Linkwarden Docker Compose with Traefik 2
# The setup for traefik and related auth chains is not included in this docker-compose.yml file.
# This will not work without additional entries.
# t2_proxy => Traefik 2 docker network
# linkwarden => Internal docker network for linkwarden -> postgres communication
version: "3.9"
networks:
t2_proxy:
name: t2_proxy
driver: bridge
ipam:
config:
- subnet: 192.168.90.0/24
linkwarden:
services:
linkwarden-db:
container_name: linkwarden-db
image: postgres
security_opt:
- no-new-privileges:true
restart: unless-stopped
profiles: ["all", "linkwarden"]
networks:
- linkwarden
healthcheck:
test: ["CMD-SHELL", "pg_isready -d linkwarden -U linkwarden || exit 1"]
interval: 5s
timeout: 5s
start_period: 30s
retries: 10
environment:
POSTGRES_HOST_AUTH_METHOD: "trust"
POSTGRES_USER: linkwarden
POSTGRES_PASSWORD: Linkwarden123!
POSTGRES_DB: linkwarden
volumes:
- $DOCKERDIR/appdata/linkwarden/db:/var/lib/postgresql
linkwarden-migrate: &linkwarden-service
image: "linkwarden/linkwarden"
restart: on-failure
profiles: ["all", "linkwarden"]
networks:
- linkwarden
build:
context: https://github.com/linkwarden/linkwarden.git#main
dockerfile_inline: |
FROM node:20
WORKDIR /opt/linkwarden
COPY . .
RUN yarn && \
npx playwright@1.36.2 install-deps && \
yarn build
ENTRYPOINT ["yarn"]
CMD ["start"]
command: prisma migrate deploy
environment:
- DATABASE_URL=postgres://linkwarden:Linkwarden123!@linkwarden-db:5432/linkwarden?sslmode=disable&max_conns=20&max_idle_conns=4
- NEXTAUTH_SECRET=${NEXTAUTH_SECRET:-DR5o8dX6SR5#g*@7z!k2%8#sf5S@RR6F}
- NEXTAUTH_URL=${NEXTAUTH_URL:-http://localhost:3000}
- PAGINATION_TAKE_COUNT
- STORAGE_FOLDER
- SPACES_KEY
- SPACES_SECRET
- SPACES_ENDPOINT
- SPACES_REGION
- NEXT_PUBLIC_EMAIL_PROVIDER
- EMAIL_FROM
- EMAIL_SERVER
depends_on:
linkwarden-db:
condition: service_healthy
linkwarden:
<<: *linkwarden-service
restart: unless-stopped
command: start
profiles: ["all", "linkwarden"]
networks:
- linkwarden
- t2_proxy
depends_on:
linkwarden-migrate:
condition: service_completed_successfully
labels:
- "traefik.enable=true"
## HTTP Routers
- "traefik.http.routers.linkwarden-rtr.entrypoints=https"
- "traefik.http.routers.linkwarden-rtr.rule=Host(`links.$DOMAINNAME`)"
## Middlewares
- "traefik.http.routers.linkwarden-rtr.middlewares=chain-no-auth@file"
## HTTP Services
- "traefik.http.routers.linkwarden-rtr.service=linkwarden-svc"
- "traefik.http.services.linkwarden-svc.loadbalancer.server.port=3000"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment