From f9651c6ef8a22f314aae4d8187c9d0857d9d4e5e Mon Sep 17 00:00:00 2001 From: Thibault Date: Wed, 29 May 2024 17:22:51 +0200 Subject: [PATCH] docker: rust static linking --- Cargo.lock | 2 +- Cargo.toml | 2 +- Dockerfile | 9 +++++---- Readme.md | 10 +++++++++- src/interpreter.rs | 2 +- websocketServer/src/app.ts | 2 +- websocketServer/src/websocket.ts | 4 +--- 7 files changed, 19 insertions(+), 12 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 41686c0..b08c739 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -61,7 +61,7 @@ dependencies = [ ] [[package]] -name = "brain_fuck_interpreter" +name = "brainfuck_interpreter" version = "0.1.0" dependencies = [ "env_logger", diff --git a/Cargo.toml b/Cargo.toml index d1de428..9484708 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "brain_fuck_interpreter" +name = "brainfuck_interpreter" version = "0.1.0" edition = "2021" diff --git a/Dockerfile b/Dockerfile index 39cd1a6..062348b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,9 +1,10 @@ -FROM rust:1.78 as builder +FROM rust:1.78-slim-buster as builder -WORKDIR /usr/src/brain_fuck_interpreter +WORKDIR /usr/src/brainfuck_interpreter COPY . . -RUN cargo install --path . +RUN rustup target add x86_64-unknown-linux-musl \ + && cargo install --target=x86_64-unknown-linux-musl --path . FROM node:22.2.0-alpine as run @@ -19,6 +20,6 @@ COPY exec_all.sh exec_all.sh RUN chmod +x exec_all.sh # RUN apt-get update && apt-get install -y extra-runtime-dependencies && rm -rf /var/lib/apt/lists/* -COPY --from=builder /usr/local/cargo/bin/brain_fuck_interpreter /usr/local/bin/brain_fuck_interpreter +COPY --from=builder /usr/local/cargo/bin/brainfuck_interpreter /usr/local/bin/brainfuck_interpreter CMD ["sh", "exec_all.sh"] diff --git a/Readme.md b/Readme.md index d962dff..e37415b 100644 --- a/Readme.md +++ b/Readme.md @@ -1,5 +1,6 @@ # Brain Fuck Interpreter +## Intro What is [BrainFuck](https://en.wikipedia.org/wiki/Brainfuck)? A simple BrainFuck interpreter developed in Rust. @@ -7,7 +8,7 @@ A simple BrainFuck interpreter developed in Rust. You can access it here: https://brainfuck_interpreter.tbmc.ovh/ - +## Example Hello world in BrainFuck: ```brainfuck @@ -60,3 +61,10 @@ Case : Valeur > va à la case 4 . imprime le caractère '\n'(nouvelle ligne) (10) ``` + +## Dev + +Install rust exec before running server +``bash +cargo install --path . +`` diff --git a/src/interpreter.rs b/src/interpreter.rs index 68d8f3b..5cb05c1 100644 --- a/src/interpreter.rs +++ b/src/interpreter.rs @@ -5,7 +5,7 @@ use crate::runtime::Runtime; use crate::syntax_checker::syntax_check; pub fn interpret_script_file(filename: &str) -> Result<(), String> { - let content = fs::read_to_string(filename).expect("This should not fail! May be file does not exist!"); + let content = fs::read_to_string(filename).expect("File does not exist!"); return interpret_code(content.as_str()); } diff --git a/websocketServer/src/app.ts b/websocketServer/src/app.ts index 8d68def..c2d54c2 100644 --- a/websocketServer/src/app.ts +++ b/websocketServer/src/app.ts @@ -4,4 +4,4 @@ import { runWebSocketServer } from './websocket'; runWebSocketServer(); server.listen(3001); -console.log('Listening WebSocket on port 3001'); +console.log('Listening HTTP and WebSocket on port 3001'); diff --git a/websocketServer/src/websocket.ts b/websocketServer/src/websocket.ts index 34a5621..01e1dcc 100644 --- a/websocketServer/src/websocket.ts +++ b/websocketServer/src/websocket.ts @@ -14,9 +14,7 @@ import type { import { server } from './proxy'; function getExecutable(): string { - return process.platform === 'win32' - ? 'brain_fuck_interpreter.exe' - : 'brain_fuck_interpreter'; + return 'brainfuck_interpreter'; } export function runWebSocketServer() {