株のシステムトレードをしよう - 1から始める株自動取引システムの作り方

株式をコンピュータに売買させる仕組みを少しずつ作っていきます。できあがってから公開ではなく、書いたら途中でも記事として即掲載して、後から固定ページにして体裁を整える方式で進めていきます。

DBへCSVをインポートするツールを作っている その11 - Dieselのセットアップその2

今日は前回の続きをする前に、第7回で作った Dockerfile を編集して、crateのキャッシュをできるようにする。

how-to-make-stock-trading-system.dogwood008.com

# Dockerfile

# syntax=docker/dockerfile:1.2

FROM rust:1.55-bullseye

RUN mkdir /app
WORKDIR /app

COPY Cargo.toml /app/Cargo.toml
COPY Cargo.lock /app/Cargo.lock
COPY src /app/src

# https://stackoverflow.com/a/60590697
RUN --mount=type=cache,target=/usr/local/cargo/registry \
    --mount=type=cache,target=/home/root/app/target \
  cargo install --path .

# 後でマルチステージビルドとして使い、生成物だけ残しこのステージは破棄する
RUN cargo install diesel_cli --no-default-features --features postgres

前回の続きを進めていく。

how-to-make-stock-trading-system.dogwood008.com

まずは、下記に沿ってenvの設定から。

diesel.rs

# docker-compose.yml
services:
  app:
    build: .
    command: cargo run
    volumes:
      - ./src:/app/src
    ports:
      - '8080:8080'
    environment:
      - DATABASE_URL='postgres://postgres:postgres@db/'

続いてセットアップする。

root@82435f243afc:/app# diesel setup
Creating migrations directory at: /app/migrations
thread 'main' panicked at '`'postgres://postgres:postgres@db/'` is not a valid database URL. It should start with `postgres://`', /usr/local/cargo/registry/src/github.com-1ecc6299db9ec823/diesel_cli-1.4.1/src/database.rs:59:17
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

うーん。。。DB名まで指定しないとダメか。

# docker-compose.yml
services:
  app:
    environment:
      - DATABASE_URL='postgres://postgres:postgres@db/stocks'
root@82435f243afc:/app# diesel setup
Creating database: stocks

いけたわ。今日はここまで。

(C) 2020 dogwood008 禁無断転載 不許複製 Reprinting, reproducing are prohibited.