LoginSignup
0
0

More than 3 years have passed since last update.

GitHub * TravisCI * Docker Repository(DockerHub, ECR)の連携

Posted at

GitHub * TravisCI * Docker Repository の連携

TravisCI を使うことになりちょっと勉強しました。
CircleCIやGitLab CIとそんなに変わらないdockerが使えるCIです。

ソースは github にあげました。

ファイル

Djangoの雛形作成

一応、Djangoの雛形作成した手順です。
pyenv, Pipenvはセットアップ済です。

$ pipenv --python 3.6
$ pipenv install django==2.2.3
$ pipenv shell
(travis_ci) $ django-admin startproject travis_ci
(travis_ci) $ cd travis_ci
(travis_ci) $ python manage.py migrate

.travis.yml

GitHubでタグを打ったら、Docker Hub, ECRにDjango雛形が入ったdockerイメージをプッシュします。

.travis.yml
language: python

services:
  - docker

env:
  global:
    - APP_NAME=sample_travis_ci
    # awscli
    - PATH=$HOME/.local/bin:$PATH
    # Docker Hub
    - DOCKER_HUB_ACCOUNT=va034600
    # ECR
    - AWS_DEFAULT_REGION=ap-northeast-1

before_install:
  # ECR
  - pip install -U pip
  - pip install awscli

script:
  - echo "script"

after_success:
  - docker --version
  - docker build -t $APP_NAME:latest -f docker/Dockerfile .
  - docker images

  # Docker Hub
  - echo "$DOCKER_HUB_PASSWORD" | docker login -u "$DOCKER_HUB_ACCOUNT" --password-stdin
  # Docker Hub public
  - docker tag $APP_NAME:latest $DOCKER_HUB_ACCOUNT/${APP_NAME}_pub:${TRAVIS_TAG}
  - docker push $DOCKER_HUB_ACCOUNT/${APP_NAME}_pub:${TRAVIS_TAG}
  # Docker Hub private
  - docker tag $APP_NAME:latest $DOCKER_HUB_ACCOUNT/$APP_NAME:${TRAVIS_TAG}
  - docker push $DOCKER_HUB_ACCOUNT/$APP_NAME:${TRAVIS_TAG}

  # ECR
  - $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
  - docker tag $APP_NAME:latest $AWS_ECR_ACCOUNT.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$APP_NAME:${TRAVIS_TAG}
  - docker push $AWS_ECR_ACCOUNT.dkr.ecr.ap-northeast-1.amazonaws.com/$APP_NAME:${TRAVIS_TAG}

branches:
  only:
  - "/^v?[0-9\\.]+/"

Dockerfile

FROM python:3.6.10

WORKDIR /usr/src/app

RUN pip install --upgrade pip && pip install pipenv

COPY ./Pipfile /usr/src/app/Pipfile
COPY ./Pipfile.lock /usr/src/app/Pipfile.lock

RUN pipenv install --system

COPY . /usr/src/app/

CMD tail -f /dev/null

各種サービスの設定

TravisCI

TravisCI の Environment Variablesの設定です。
スクリーンショット 2020-06-30 7.51.17.png

Docker Repository(DockerHub)

DockerHubにrepositoryを作成しました。
スクリーンショット 2020-06-30 7.53.14.png

Docker Repository(ECR)

ECR -> リポジトリ -> リポジトリ でrepositoryを作成しました。

起動

最後にDocker Hubに登録したdockerイメージをpullして起動確認しました。

docker-compose.yml

docker-compose.yml
version: '3'
services:
  api:
    image: va034600/sample_travis_ci_pub:v2.0.10
    working_dir: /usr/src/app/travis_ci
    command: python manage.py runserver 0.0.0.0:8000
    ports:
      - "8000:8000"
$ docker-compose up

ブラウザで確認できたら終了です。

0
0
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
0