1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Dockerを使用してローカルでのコンテナ作成からGCEへのデプロイまでの手順

Last updated at Posted at 2023-05-06

このチュートリアルでは、Dockerコンテナ(pannakoota/telegram_bot)を作成して、GCP Compute EngineのContainer-Optimized OSで実行する方法を説明します。

前提条件

  • 開発環境(Mac)にDockerがインストールされていること
  • Google Cloud Platformアカウントがあり、Compute Engineが利用可能であること
  • Docker Hubアカウントがあること

手順

Dockerfileの作成

Dockerfileを用意して下記の環境をコンテナ化
※下記は例になります。

cat > Dockerfile <<EOF
FROM rockylinux:8.5

RUN yum update -y 
RUN yum install -y \
 epel-release \
 git \
 jq \
 langpacks-ja \
 cronie \
 python3

RUN pip3 install google-api-python-client google-auth gspread oauth2client

RUN dnf -y install langpacks-ja \
 && cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

ENV LANG="ja_JP.UTF-8" \
    LANGUAGE="ja_JP:ja" \
    LC_ALL="ja_JP.UTF-8"

RUN git clone https://github.com/kawamurashingo/telegram_bot
RUN chmod 775 /telegram_bot/telegram.sh
RUN /usr/bin/crontab /telegram_bot/crontab.txt

RUN git clone https://github.com/kawamurashingo/telegram_bot_next
RUN chmod 775 /telegram_bot_next/telegram.sh
RUN /usr/bin/crontab /telegram_bot_next/crontab.txt

RUN ln -sf /proc/1/fd/1 /var/log/cron.log

CMD crond && tail -f /dev/null
EOF

Dockerfileからコンテナを作成

docker login
docker search rockylinux
docker pull rockylinux:8.5
docker build --no-cache -t pannakoota/telegram_bot .

Docker Hubにコンテナをプッシュ

docker push pannakoota/telegram_bot

GCPでContainer-Optimized OSインスタンスを起動し、pannakoota/telegram_botイメージを選択

スクリーンショット 2023-05-06 9.37.00.png
スクリーンショット 2023-05-06 9.37.51.png
スクリーンショット 2023-05-06 9.38.47.png

Compute Engineで無事デプロイされていることの確認

docker ps
docker exec -it <コンテナID> /bin/bash

Docker内で設定を行う(任意)

ps -ef | grep cron
crontab -l
cd telegram_bot
vi credentials.json
vi get_events.py
vi telegram.sh
cd ../telegram_bot_next
vi credentials.json
vi get_events.py
vi telegram.sh
crontab -e

Dockerコンテナの保存とカスタムコンテナの作成(任意)

docker ps
docker commit <コンテナID> telegram_custom
docker image ls

オリジナルコンテナを停止し、カスタムコンテナを起動(任意)

docker kill <コンテナID>
docker run --name telegram_custom -d telegram_custom
docker exec -it telegram_custom /bin/bash
exit

自動起動設定の更新(任意)

docker update --restart=always telegram_custom
docker inspect -f "{{.Name}} {{.HostConfig.RestartPolicy.Name}}" $(docker ps -aq) | grep always

再起動テスト(任意)

sudo reboot

備考

GitHub

DockerHub

Dockerhubに登録

実行中のDockerコンテナを停止および削除

docker ps
docker kill <コンテナID>
または
docker stop <コンテナID>
docker container rm telegram_bot

Dockerコンテナのリビルド

docker build --no-cache -t pannakoota/telegram_bot .

Dockerコンテナの実行

docker run -it --name telegram -d pannakoota/telegram_bot

Dockerコンテナに接続

docker exec -it telegram /bin/bash
exit
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?