🦔
AtCoderのPython環境をDockerで構築
はじめに
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
に登録している。
だったらacc s
も登録すれば良かった。あとで登録する。
Discussion