0
0

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.

Amazon Linux2 Ruby2.6 の Dockerfile

Last updated at Posted at 2021-02-04

Amazon Linux2 Ruby2.6 の Dockerfile

FROM amazonlinux:2

# 日本語設定
RUN yum install -y glibc-langpack-ja && yum clean all
ENV LANG ja_JP.utf8
ENV LC_ALL ja_JP.utf8

RUN unlink /etc/localtime \
    && ln -s /usr/share/zoneinfo/Japan /etc/localtime

# パッケージインストール
RUN yum update -y \
    && yum install -y amazon-linux-extras \
    && amazon-linux-extras install -y ruby2.6 \
    && amazon-linux-extras install -y epel \
    && yum install -y sudo shadow-utils procps which net-tools \
    && yum groupinstall -y "Development tools" \
    && yum install -y kernel-devel kernel-headers \
    && yum install -y vim wget curl git zip ImageMagick \
    && yum install -y ruby-devel rubygems-devel \
    && yum install -y mailx mariadb mariadb-devel sqlite-devel

# nodejs インストール
RUN curl --silent --location https://rpm.nodesource.com/setup_14.x | sudo bash - \
    && yum -y install nodejs \
    && npm install -g n \
    && npm install --save-dev -g -f grunt \
    && npm install --save-dev -g -f grunt-cli \
    && npm install --save-dev -g -f webpack

## yarn インストール
RUN curl -sSL https://dl.yarnpkg.com/rpm/yarn.repo | tee /etc/yum.repos.d/yarn.repo \
    && rpm --import https://dl.yarnpkg.com/rpm/pubkey.gpg \
    && yum install -y yarn

RUN mkdir /app
ENV APP_ROOT /app
WORKDIR $APP_ROOT

# bash_profile
RUN echo -e "alias ls='ls --color=auto --show-control-chars --time-style=long-iso --human-readable --classify'\nalias ll='ls -l'\nalias la='ls -A'\nalias grep='grep --color'\nalias less='less --raw-control-chars'\nalias whence='type -a'" >> ~/.bashrc \
    && echo -e "if [ -f ~/.bashrc ]; then\n  source ~/.bashrc\nfi" >> ~/.bash_profile \
    && source ~/.bash_profile

# SQLite3インストール
RUN cd \
    && wget https://www.sqlite.org/2021/sqlite-autoconf-3340100.tar.gz \
    && tar xzvf sqlite-autoconf-3340100.tar.gz \
    && cd sqlite-autoconf-3340100 \
    && ./configure --prefix=/opt/sqlite/sqlite3 \
    && make \
    && make install \
    && gem install sqlite3 -- --with-sqlite3-include=/opt/sqlite/sqlite3/include --with-sqlite3-lib=/opt/sqlite/sqlite3/lib \
    && echo 'export LD_LIBRARY_PATH="/opt/sqlite/sqlite3/lib"' >> ~/.bashrc \
    && source ~/.bash_profile

# direnv
RUN wget -O direnv https://github.com/direnv/direnv/releases/download/v2.27.0/direnv.linux-amd64 \
    && chmod +x direnv \
    && sudo mv direnv /usr/bin/ \
    && echo -e "direnv allow ." >> ~/.bashrc \
    && echo -e 'eval "$(direnv hook bash)"' >> ~/.bashrc \
    && source ~/.bash_profile

# bundle インストール
RUN gem install bundle

# postfix(mailhog用)
#   ipv6を有効にする
#   もしくは
#   /etc/hosts の「::1」から始まる行をコメントアウトし、
#   「/sbin/postfix start -D」を実行しないと動かない。。。
RUN yum install -y postfix \
    && postconf -e relayhost=mail:1025 \
    && /sbin/postfix start -D

docker-compose.yml

version: "3.7"

services:
  db:
    container_name: db
    image: mysql:5.7
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: '1111'
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: '1111'
      TZ: 'Asia/Tokyo'
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
      - ./.docker/mysql/initdb.d:/docker-entrypoint-initdb.d

  app:
    container_name: app
    build: .
    environment:
      MYSQL_HOST: db
      MYSQL_USER: dbuser
      MYSQL_PASSWORD: '1111'
    ports:
      # ruby-debug-ide 用
      - "1234:1234"
      - "26162:26162"
      # rails用
      - "3000:3000"
    depends_on:
      - db
    tty: true
    stdin_open: true
    privileged: true
    volumes:
      - .:/app

  mail:
    container_name: mail
    image: mailhog/mailhog
    ports:
      - "8025:8025"
      - "1025:1025"

volumes:
  db_data:
    driver: local

./.docker/mysql/initdb.d:/docker-entrypoint-initdb.d/00_grant.sql

GRANT ALL PRIVILEGES ON *.* TO dbuser;
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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?