diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..39e35ff --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,38 @@ +name: Development + +on: + push: + tags: + - '*' + workflow_dispatch: + +env: + CARGO_TERM_COLOR: always + +jobs: + build-container: + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v3 + + - name: Log in to Docker Hub + uses: docker/login-action@f4ef78c080cd8ba55a85445d5b36e214a81df20a + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@9ec57ed1fcdbf14dcef7dfbe97b2010124a938b7 + with: + images: alexohneander/rustysearch + + - name: Build and push Docker image + uses: docker/build-push-action@3b5e8027fcad23fda98b2e3ac259d8d67585f671 + with: + context: . + file: ./Dockerfile + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..a606eb6 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +# 1. This tells docker to use the Rust official image +FROM rustlang/rust:nightly-bullseye as BUILDER + +# Define WORKDIR +WORKDIR /build + +# 2. Copy the files in your machine to the Docker image +COPY ./ ./ + +# Build your program for release +RUN cargo build --release + +# Runner Step +FROM rustlang/rust:nightly-bullseye as RUNNER + +# Define WORKDIR +WORKDIR /app + +# Copy Binary and License +COPY --from=BUILDER /build/target/release/rustysearch /app/ +COPY --from=BUILDER /build/LICENSE /app/ + +# Expose Port +EXPOSE 4000 + +# Run the binary +CMD ["/app/rustysearch"] diff --git a/src/main.rs b/src/main.rs index 334eb41..09ebe84 100644 --- a/src/main.rs +++ b/src/main.rs @@ -51,7 +51,7 @@ async fn main() -> std::io::Result<()> { .route("/search", web::get().to(search::search)) .route("/search/debug", web::get().to(search::debug_index)) }) - .bind(("127.0.0.1", 4000))? + .bind(("0.0.0.0", 4000))? .run() .await }