Merge pull request #5 from alexohneander/feature/container_pipeline

feat: add Docker build pipeline
This commit is contained in:
Alex Wellnitz 2024-12-20 00:42:59 +01:00 committed by GitHub
commit db6ef771e2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 66 additions and 1 deletions

38
.github/workflows/docker.yml vendored Normal file
View File

@ -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 }}

27
Dockerfile Normal file
View File

@ -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"]

View File

@ -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
}