From fc6b66f2e65aa7ec1afec8e3f188a06bb19be828 Mon Sep 17 00:00:00 2001 From: phoenix Date: Sun, 13 Apr 2025 18:38:38 +0000 Subject: [PATCH] Docker changes (#31) Reviewed-on: https://git.kundeng.us/phoenix/icarus_auth/pulls/31 Co-authored-by: phoenix Co-committed-by: phoenix --- .dockerignore.yaml | 2 ++ .env.sample | 8 ++++++-- Dockerfile | 4 ---- READEME.md | 20 ++++++++++++++++++++ docker-compose.yaml | 27 ++++++++------------------- docker_run.txt | 6 +++--- src/lib.rs | 1 - 7 files changed, 39 insertions(+), 29 deletions(-) create mode 100644 READEME.md diff --git a/.dockerignore.yaml b/.dockerignore.yaml index 9b144ce..dfcd3fa 100644 --- a/.dockerignore.yaml +++ b/.dockerignore.yaml @@ -5,6 +5,8 @@ pkg/ # Ignore git directory .git/ +.gitea/ + # Ignore environment files (configure via docker-compose instead) .env* diff --git a/.env.sample b/.env.sample index c7494ce..30ccbb4 100644 --- a/.env.sample +++ b/.env.sample @@ -1,2 +1,6 @@ -DATABASE_URL=postgres://username:password@localhost/database_name -SECRET_KEY=refero34o8rfhfjn983thf39fhc943rf923n3h \ No newline at end of file +SECRET_KEY=refero34o8rfhfjn983thf39fhc943rf923n3h +POSTGRES_USER=icarus_op_test +POSTGRES_PASSWORD=password +POSTGRES_DB=icarus_auth_test_db +POSTGRES_HOST=localhost +DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@${POSTGRES_HOST}:5432/${POSTGRES_DB} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 48e6b75..c1b1081 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,8 +34,6 @@ RUN --mount=type=ssh mkdir src && \ # Copy the actual source code COPY src ./src # If you have other directories like `templates` or `static`, copy them too -# COPY templates ./templates -# COPY static ./static COPY .env ./.env COPY migrations ./migrations @@ -64,8 +62,6 @@ COPY --from=builder /usr/src/app/target/release/icarus_auth . # It's generally better to configure via environment variables in Docker though COPY --from=builder /usr/src/app/.env . COPY --from=builder /usr/src/app/migrations ./migrations -# COPY --from=builder /usr/src/app/templates ./templates -# COPY --from=builder /usr/src/app/static ./static # Expose the port your Axum app listens on (e.g., 3000 or 8000) EXPOSE 3000 diff --git a/READEME.md b/READEME.md new file mode 100644 index 0000000..5ba9a07 --- /dev/null +++ b/READEME.md @@ -0,0 +1,20 @@ + + +# Getting started +Take notice of the .env.sample file and create copies without the .sample in the name. + +`.env.sample` -> `.env` + +Ensure that all variables are populated and is correct. + +## Docker + +Build the images +``` +docker compose build --ssh default auth_api +``` + +Bring it up +``` +docker compose up -d --force-recreate auth_api +``` \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index 38c1b41..8dd5162 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -2,43 +2,32 @@ version: '3.8' # Use a recent version services: # Your Rust Application Service - app: + auth_api: build: . # Tells docker-compose to build the Dockerfile in the current directory container_name: icarus_auth # Optional: Give the container a specific name ports: # Map host port 8000 to container port 3000 (adjust as needed) - # Format: "HOST_PORT:CONTAINER_PORT" - "8000:3000" - environment: - # Pass environment variables to your Rust application - # RUST_LOG: info # Example: Set log level - # IMPORTANT: Configure DATABASE_URL to connect to the 'db' service - # The hostname 'db' matches the service name defined below. - DATABASE_URL: postgresql://icarus_op:password@db:5432/icarus_auth - # Add any other environment variables your app needs - # APP_HOST: 0.0.0.0 - # APP_PORT: 3000 + env_file: + - .env depends_on: - db: + auth_db: condition: service_healthy # Wait for the DB to be healthy before starting the app restart: unless-stopped # Optional: Restart policy # PostgreSQL Database Service - db: + auth_db: image: postgres:17.4-alpine # Use an official Postgres image (Alpine variant is smaller) container_name: icarus_auth_db # Optional: Give the container a specific name environment: # These MUST match the user, password, and database name in the DATABASE_URL above - POSTGRES_USER: icarus_op - POSTGRES_PASSWORD: password - POSTGRES_DB: icarus_auth + POSTGRES_USER: ${POSTGRES_USER:-icarus_op} + POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-password} + POSTGRES_DB: ${POSTGRES_DB:-icarus_auth} volumes: # Persist database data using a named volume - postgres_data:/var/lib/postgresql/data ports: [] - # Optional: Expose port 5432 ONLY if you need to connect directly from your host machine (e.g., for debugging) - # - "5432:5432" - # pass: healthcheck: # Checks if Postgres is ready to accept connections test: ["CMD-SHELL", "pg_isready -U $$POSTGRES_USER -d $$POSTGRES_DB"] diff --git a/docker_run.txt b/docker_run.txt index bc0f021..7f319e4 100644 --- a/docker_run.txt +++ b/docker_run.txt @@ -1,13 +1,13 @@ # Docker stuff #Build app -docker-compose build --ssh default app +docker compose build --ssh default auth_api # Rebuild and bring up -docker-compose up -d --force-recreate app +docker compose up -d --force-recreate auth_api # Bring it down -docker-compose down -v +docker compose down -v # Pruning docker system prune -a \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 9ab8f4d..ca334c5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -36,7 +36,6 @@ pub mod db { async fn get_db_url() -> String { #[cfg(debug_assertions)] // Example: Only load .env in debug builds dotenvy::dotenv().ok(); - env::var(keys::DBURL).expect(keys::error::ERROR) }