0
2

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 3 years have passed since last update.

【忘備録】EC2内にDockerでPython3環境を構築する

Last updated at Posted at 2020-10-24

概要

内容

  • AWSのEC2にDockerを用いてPython環境を構築する
    • 今回はseleniumでのブラウザ自動操作のパッケージを含めてコンテナ化する

環境

  • OS:AWS Linux2
  • サービス:AWS(EC2)
  • タイプ:t2.micro

前提

  • 自分のアカウントから上記環境のEC2が立てられている状態

参考資料

この辺から一部抜き出して履行。

必要なファイル

  • Dockerfile
  • docker-compose.yml

工程

  • EC2インスタンスへ接続
  • インスタンスでインストールされているパッケージとパッケージキャッシュを更新
$ sudo yum update -y
  • 最新の Docker Community Edition パッケージをインストール
$ sudo amazon-linux-extras install docker
  • 次はDocker Composeをcurlでインストール。
$ sudo curl -L https://github.com/docker/compose/releases/download/1.21.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
$ docker-compose --version

バージョンが表示されていたら成功

  • Dockerサービスを開始
$ sudo service docker start
  • ec2-user をdockerグループに追加し、今後コマンドで入力するsudoを省略する
$ sudo usermod -a -G docker ec2-user
  • 反映させるために一旦ログアウトし、再びEC2にログインする
  • ec2-user が sudo を使用せずに Docker コマンドを実行できることを確認
$ docker info

2.Dockerhubに登録

  • DockerHubにアカウント登録

  • リポジトリを作成

  • EC2でDockerHubにログインする

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: アカウント名
Password: パスワード
Login Succeeded

3.Dockerイメージを作成するためのファイルを作成

  • 必要なファイル

    • Dockerfile
    • docker-compose.yml
  • Dockerfileを作成。

$ touch Dockerfile
  • vimで中身を編集
$ vim Dockerfile
  • 今回はpython3とブラウザの自動操作をするためのパッケージが入ったイメージコンテナを作成する。
Dockerfile

FROM python:3
USER root

RUN apt-get update
RUN apt-get -y install locales && \
localedef -f UTF-8 -i ja_JP ja_JP.UTF-8
ENV LANG ja_JP.UTF-8
ENV LANGUAGE ja_JP:ja
ENV LC_ALL ja_JP.UTF-8
ENV TZ JST-9
ENV TERM xterm

#各種パッケージをインストール
RUN apt-get install -y vim less
RUN pip install --upgrade pip
RUN pip install --upgrade beautifulsoup4
RUN pip install --upgrade chromedriver
RUN pip install --upgrade chromedriver-binary
RUN pip install --upgrade datetime
RUN pip install --upgrade pandas
RUN pip install --upgrade pyyaml
RUN pip install --upgrade requests
RUN pip install --upgrade selenium
RUN pip install --upgrade regex
  • 上記をコピーし:wqで保存する

  • 次はdocker-compose.ymlを作成

touch docker-compose.yml
  • これもvimで中身を編集。
vim docker-compose.yml
docker-compose.yml
version: '3'
services:
  python3:
    restart: always
    build: .
    container_name: 'scrayping'
    working_dir: '/root/'
    tty: true
    volumes:
      - ./opt:/root/opt
  • 上記をコピーし:wqで保存する

3.Dockerイメージを作成

  • docker-compose.ymlの内容に基づいてイメージを作成する
    • このとき「-t」でdockerhubでつけるアカウント名/イメージ名にタグを命名しておかないとDockerHubにpush出来ない。注意
$ docker-compose build -t {dockerhubのアカウント名/イメージ名}
  • イメーシを作成できたかチェック
$ docker images

REPOSITORY                  TAG                 IMAGE ID            CREATED             SIZE
shunsukenashiki/scrayping   latest              ed6df28c956e        About an hour ago   1.15GB

こんな感じで作られていればOK

4.Dockerイメージを元に、コンテナを作成

  • 作成したDocker imageを元にコンテナを作る
    • 「-d」をつける理由は、-dをつけないとバックグラウンドでコンテナが起動しないから
$ docker run -d --name #{任意のコンテナ名} -d -it {REPOSITORY名}
  • コンテナが作成され、起動されているかチェック。作成できていたら完了
$ docker ps

CONTAINER ID        IMAGE                       COMMAND             CREATED             STATUS              PORTS               NAMES
b42460c71e9c        shunsukenashiki/scrayping   "python3"           5 seconds ago       Up 4 seconds                            scrayping

5.作成したコンテナを実行する

  • 作成したコンテナを実行する
$ docker exec -it #{任意のコンテナ名} bash
  • Dockerfileに指定したバージョンが入っていれば完了
$ pip3 list

Package         Version
--------------- ---------
beautifulsoup4  4.9.1
certifi         2020.6.20
chardet         3.0.4
chromedriver    2.24.1
DateTime        4.3
idna            2.10
numpy           1.19.1
pandas          1.1.0
pip             20.2.1
python-dateutil 2.8.1
pytz            2020.1
requests        2.24.0
selenium        3.141.0
setuptools      49.2.1
six             1.15.0
soupsieve       2.0.1
urllib3         1.25.10
wheel           0.34.2
zope.interface  5.1.0

Doekerhubにアップロードする

  • 動作確認できたら、Dockerhubにpushしていく
$ docker push shunsukenashiki/{dockerhubのアカウント名/イメージ名}:latest
  • Dockerhubにちゃんと紐づけられていれば完了。あとはここからimageをpullすれば使いまわせる
0
2
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
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?