Open4
Rust(rocket)をDockerで構築したときに、外部から指定したポートにアクセス出来ないのは何故か
ちょっとばかし古いのですが、以下の方法ではローカルからのアクセスが拒否されてしまう・・・
少し脱線しますが、docker-composeコマンドの実装は
docker-compose up -d
でなくとも
docker compose up -d
という感じでハイフンなしで実行できるのですね。
下記のファイルでdocker composeを実行するが、やはりコンテナ内からしかアクセスできず・・・😔
docker-compose.yml
version: '3.8'
services:
backend:
container_name: backend
build:
context: .
dockerfile: Dockerfile
volumes:
- ./:/backend
- rust_docker_todo_target:/backend/target
ports:
- 9090:8000
command: cargo run
tty: true
environment:
USER: kenara
TZ: Asia/Tokyo
CARGO_BUILD_TARGET_DIR: /backend/target
volumes:
rust_docker_todo_target:
external: true
Dockerfile
FROM rustlang/rust:nightly
WORKDIR /backend
COPY . .
RUN cargo install --path .
EXPOSE 9090
main.rs
#![feature(proc_macro_hygiene, decl_macro)]
#[macro_use] extern crate rocket;
#[get("/")]
fn index() -> &'static str {
"Hello, world!"
}
fn main() {
rocket::ignite().mount("/", routes![index]).launch();
}
Cargo.toml
[package]
name = "rust_docker_todo"
version = "0.1.0"
edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rocket = "0.4.10"
[global]
address = "0.0.0.0"
[development]
address = "0.0.0.0"
私も同じ状況になりました。Rocket.tomlを作成してホスト名を0.0.0.0に指定した所解決したので、おそらくフォワード先でホスト名が127.0.0.1ではなくなるのではないかなと思っています(未検証)
[default]
address = "0.0.0.0"
[debug]
port = 8000
log = "debug"