🦔

AtCoderのPython環境をDockerで構築

2024/11/14に公開

はじめに

LAPRASというサービスに登録した。Qiita, Zennなどの外部サービスとの連携機能があり、これまで登録してきたサービスを紐づけている。

連携サービスのなかにAtCoderがあった。昔やっていたがアカウントを消してしまったので、再度作り直すことに。アカウント消さなければ良かった…

改めて環境を構築したので備忘録として記載する。

AtCoderのページ

本家と過去問

環境構築

使用ライブラリ

成果物

GitHubに登録済み。

ポイントは下記の通り。

1. Dockerfile

vscodeのページにnon rootユーザの登録方法が載っていたので参考にした。

# https://code.visualstudio.com/remote/advancedcontainers/add-nonroot-user
ARG USERNAME=hoshito
ARG HOME=/home/hoshito/
ARG USER_UID=1000
ARG USER_GID=$USER_UID

# Create the user
RUN <<EOF
groupadd --gid $USER_GID $USERNAME
useradd --uid $USER_UID --gid $USER_GID -m $USERNAME
apt-get update
EOF

使用ライブラリをインストールする際にnpmが必要なのでそのインストール。

RUN <<EOF
apt-get install -y --no-install-recommends \
nodejs \
npm
EOF

RUN <<EOF
pip install online-judge-tools
npm install -g atcoder-cli
EOF

2. Dockerイメージのビルドとコンテナの実行

$ docker build . -f Dockerfile -t py_atcoder:latest
$ docker run --init -itd -name py_atcoder py_atcoder:latest

3. コンテナ内での実行コマンド

各サービスへのログイン。

oj login https://atcoder.jp/
acc login

これでコンテストに出ることが可能になった。
実際に提出用のコマンドが下記。

# 問題用のディレクトリ作成
$ acc new abc379

# テスト実行
$ cd abc379/a
$ test

# 提出
$ acc s -s  -- --guess-python-interpreter pypy

test.bash_aliasesに登録している。
https://github.com/hoshito/py_atcoder/blob/main/.bash_aliases

だったらacc sも登録すれば良かった。あとで登録する。

Discussion