version: '3' networks: gitea_joplin_net: external: false services: # [통합 데이터베이스] PostgreSQL 17 db: image: postgres:17 container_name: shared_postgres restart: always volumes: - /media/docker/postgres:/var/lib/postgresql/data environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=super_secure_password_here # 전체 DB 관리자 비밀번호 (원하는 대로 변경 가능) networks: - gitea_joplin_net # 컨테이너 최초 실행 시 Gitea와 Joplin을 위한 각각의 DB와 유저를 생성하는 스크립트 entrypoint: [ "bash", "-c", "docker-entrypoint.sh postgres & until pg_isready -U postgres; do sleep 1; done; psql -U postgres -c \"CREATE USER gitea WITH PASSWORD 'gitea';\"; psql -U postgres -c \"CREATE DATABASE gitea OWNER gitea;\"; psql -U postgres -c \"CREATE USER joplin WITH PASSWORD 'joplin';\"; psql -U postgres -c \"CREATE DATABASE joplin OWNER joplin;\"; wait" ] # [Gitea 서비스] gitea: image: docker.gitea.com/gitea:latest container_name: gitea restart: always depends_on: - db networks: - gitea_joplin_net ports: - "3001:3000" - "222:22" volumes: - /media/docker/gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro environment: - USER_UID=1000 - USER_GID=1000 - GITEA__database__DB_TYPE=postgres - GITEA__database__HOST=db:5432 - GITEA__database__NAME=gitea - GITEA__database__USER=gitea - GITEA__database__PASSWD=gitea # [Joplin 서비스] joplin: image: joplin/server:latest container_name: joplin_server restart: always depends_on: - db networks: - gitea_joplin_net ports: - "22300:22300" environment: - APP_PORT=22300 - APP_BASE_URL=https://joplin.banggae.duckdns.org - DB_CLIENT=pg - POSTGRES_HOST=db - POSTGRES_PORT=5432 - POSTGRES_DATABASE=joplin - POSTGRES_USER=joplin - POSTGRES_PASSWORD=joplin