自分で使う用 Dockerfile、docker-compose.yml まとめ

  • Ruby 用追加 2021/01/18

Ruby

Dockerfile

Dockerfile
1
2
3
4
5
6
7
# 使いたいバージョン次第で書き換える https://hub.docker.com/_/ruby
FROM ruby:3.0.0

WORKDIR /usr/src/app

# 3000番ポートを解放
EXPOSE 3000

docker-compose.yml

docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: "3"
services:
app:
build:
context: .
dockerfile: Dockerfile
ports:
- "127.0.0.1:3000:3000"
volumes:
# :cached を付与して、高速化
- .:/usr/src/app:cached
# vendor以下などホストと連携しなくてもよいものを、上書きして永続化の対象外にする。
# exclude volumes
- /usr/src/app/vendor
- /usr/src/app/tmp
- /usr/src/app/log
- /usr/src/app/.git
tty: true

volumes:
bundle:
driver: local

使い方

Ruby + Node.js(Rails 想定)

Dockerfile

Dockerfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
FROM amazonlinux:latest

ARG NODE_V="14.10.0"
ARG RUBY_V="3.0.0"

RUN yum update -y && \
yum install -y wget which systemd-sysv crontabs && \
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.8.11/1.fc21/x86_64/sqlite-devel-3.8.11-1.fc21.x86_64.rpm && \
wget https://kojipkgs.fedoraproject.org//packages/sqlite/3.8.11/1.fc21/x86_64/sqlite-3.8.11-1.fc21.x86_64.rpm && \
yum install -y sqlite-3.8.11-1.fc21.x86_64.rpm sqlite-devel-3.8.11-1.fc21.x86_64.rpm && \
yum install -y git tar gcc gcc-c++ make openssl-devel zlib-devel sqlite sqlite-devel bzip2 readline-devel mysql-devel && \

# Node.js設定
git clone https://github.com/nodenv/nodenv.git ~/.nodenv && \
echo 'export PATH="$HOME/.nodenv/bin:$PATH"' >> ~/.bash_profile && \
source ~/.bash_profile && \
echo 'eval "$(nodenv init -)"' >> ~/.bash_profile && \
source ~/.bash_profile && \
mkdir -p "$(nodenv root)"/plugins && \
git clone https://github.com/nodenv/node-build.git "$(nodenv root)"/plugins/node-build && \
nodenv install $NODE_V && \
nodenv global $NODE_V && \
npm install yarn && \

# Ruby設定
git clone https://github.com/rbenv/rbenv.git ~/.rbenv && \
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile && \
source ~/.bash_profile && \
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile && \
source ~/.bash_profile && \
mkdir -p "$(rbenv root)"/plugins && \
git clone https://github.com/rbenv/ruby-build.git "$(rbenv root)"/plugins/ruby-build && \
rbenv install $RUBY_V && \
rbenv global $RUBY_V && \

# Yarn設定
wget https://dl.yarnpkg.com/rpm/yarn.repo -O /etc/yum.repos.d/yarn.repo && \
curl --silent --location https://rpm.nodesource.com/setup_6.x | bash - && \
yum install yarn -y

ENV PATH /root/.rbenv/shims:/root/.rbenv/bin:/root/.nodenv/shims:/root/.nodenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

# 作業ディレクトリ作成、設定
RUN mkdir /usr/src/app
WORKDIR /usr/src/app

EXPOSE 3000

docker-compose.yml

docker-compose.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
version: "3"
services:
app:
build:
context: .
dockerfile: Dockerfile
args:
- NODE_V=14.10.1
- RUBY_V=2.7.0
privileged: true
command: /sbin/init
ports:
- "127.0.0.1:3000:3000"
volumes:
# :cached を付与して、高速化
- .:/usr/src/app:cached
# vendor以下などホストと連携しなくてもよいものを、上書きして永続化の対象外にする。
# exclude volumes
- /usr/src/app/vendor
- /usr/src/app/tmp
- /usr/src/app/log
- /usr/src/app/.git
tty: true

volumes:
bundle:
driver: local

使い方