LoginSignup
1
1

More than 3 years have passed since last update.

【Docker/ECR/ECS】 コンテナ入門まとめ②

Last updated at Posted at 2020-05-19

前後編

参考文献

1. Dockerfile

◆ mysql-client問題

  • Debian10 "buster"(Ubuntuの母らしい)では、"mysql-client"は存在しない
  • "default-mysql-client"パッケージを使用する必要がある
Dockerfile
FROM ruby:2.6.5    ※GemfileのRubyバージョン要確認
RUN apt-get update && apt-get install -y nodejs --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y default-mysql-client --no-install-recommends && rm -rf /var/lib/apt/lists/*
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN mkdir /app   ※アプリケーション名
WORKDIR /app
ADD Gemfile /app/Gemfile
ADD Gemfile.lock /app/Gemfile.lock
RUN bundle install
ADD . /app

2. docker-compose.yml

◆ ビルドコンテキストについて

  • docker build実行時の"カレントディレクトリ"を指定する
  • デフォルトでは、Dockerfileが"カレントディレクトリ"と認識される
docker-compose.yml
version: '2'
services:
  db:
    image: mysql:latest
    environment:
      MYSQL_DATABASE: データベース名
      MYSQL_ROOT_PASSWORD: XXXXXXX
      MYSQL_USER: ユーザ名
      MYSQL_PASSWORD: XXXXXXX
    ports:
      - "3306:3306" 
  web:
    build:
      context: .
      dockerfile: Dockerfile
    command: bundle exec rails s -p 3000 -b '0.0.0.0'
    tty: true
    stdin_open: true
    depends_on:
      - db 
    ports:
      - "3000:3000" 
    volumes:  
      - .:/app   ※アプリケーション名

3. database.yml

◆ 環境変数について

 password: <%= ENV['DOCKER_DATABASE_PASSWORD'] %>
$ export DOCKER_DATABASE_PASSWORD=password  ※パスワード

database.yml

database.yml
default: &default
  adapter: mysql2
  encoding: utf8
  pool: 5
  host: db

development:
  <<: *default
  username: ユーザ名
  password: XXXXXXX
  database: データベース名

production:
  <<: *default
  database: データベース名
  username: ユーザ名
  password: <%= ENV['DOCKER_DATABASE_PASSWORD'] %>

4. ECRプッシュ作業

AWS CLI設定 ※AWSマネジメントコンソール"マイセキュリティ資格情報"参照

$ aws configure --profile ecr
AWS Access Key ID [None]: ***********************
AWS Secret Access Key [None]: *************************
Default region name [None]: ap-northeast-1
Default output format [None]: json

ECRログインコマンド

$ aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin ***.ecr.ap-northeast-1.amazonaws.com

イメージ作成

$ docker build -t 【イメージ名】 .

タグ付け

$ docker tag イメージ名:タグ名 ***.dkr.ecr.ap-northeast-1.amazonaws.com/イメージ名:タグ名

プッシュコマンド

$ docker push ***.dkr.ecr.ap-northeast-1.amazonaws.com/イメージ名:タグ名
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