From 261e5408bd0245650c7be62c167b25f3aa2800b3 Mon Sep 17 00:00:00 2001 From: Andrew Guschin Date: Thu, 28 Mar 2024 09:28:04 +0500 Subject: [PATCH] feat: new dockerfile and docker-compose.yml --- .dockerignore | 1 + .env.example | 2 ++ .gitignore | 4 ++++ Dockerfile | 12 ++++++++---- docker-compose.yml | 31 +++++++++++++++++++++++++++++++ 5 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 .dockerignore create mode 100644 .env.example create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..eb5a316 --- /dev/null +++ b/.dockerignore @@ -0,0 +1 @@ +target diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..b0a4ea5 --- /dev/null +++ b/.env.example @@ -0,0 +1,2 @@ +DATABASE_URL=postgres://user:pass@postgres:5432/db +LISTEN_ADDRESS=0.0.0.0:8000 diff --git a/.gitignore b/.gitignore index a26b890..82f022b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ target/ Cargo.lock *.swp +.* +!.gitignore +!.dockerignore +!.env.example diff --git a/Dockerfile b/Dockerfile index ad7a657..9393698 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,10 @@ -FROM debian:bullseye as final +FROM rust:buster -WORKDIR /opt/app -COPY ./target/release/web_service . +ENV CARGO_HOME=/rust +WORKDIR /app +COPY . . +RUN apt-get install libssl-dev +RUN --mount=type=cache,target=/app/target \ + cargo build --release && cp ./target/release/web_service /bin +ENTRYPOINT [ "/bin/web_service" ] -# CMD ["./web_service"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..16c97c7 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3.8" + +services: + mysqldb: + image: mysql:8 + ports: + - 3306:3306 + environment: + MYSQL_ROOT_PASSWORD: example + MYSQL_DATABASE: db + volumes: + - .:/data + postgres: + image: postgres + restart: always + environment: + POSTGRES_PASSWORD: example + poem-sqlx-service: + container_name: poem-sqlx-service + build: . + deploy: + restart_policy: + condition: on-failure + ports: + - "8000:8000" + environment: + - "DATABASE_URL=${DATABASE_URL?please set}" + - "LISTEN_ADDRESS=${LISTEN_ADDRESS:-0.0.0.0:8000}" + - "RUST_BACKTRACE=${BACKTRACE:-1}" + - "RUST_LOG=${LOG_LEVEL:-debug}" + tty: true