我尝试了使用 Docker。进行了 Docker-compose 的编排
概述
我对Docker有所了解,并且在工作中也曾使用过,但实际上并不是很了解。
Vagrant对我来说更容易理解和使用,也很方便,所以我一直在使用它,
但最近我被Docker的便利性所吸引,决定开始使用它。
环境
Rails 5.2.2
Ruby 2.5.0
操作系统:CentOS
Web服务器:Nginx
数据库:MySQL 5.7
我要建立上述的环境。
Docker Compose:
version: '2.1'
services:
shichimi:
container_name: shichimi
stdin_open: true
build: .
environment:
DB_HOST_NAME: db
links:
- db
volumes:
- .:/usr/share/nginx/html
- ./default.conf:/etc/nginx/conf.d/default.conf
- bundle:/bundle
ports:
- 3000:3000
tty: true
db:
container_name: shichimi_db
image: mysql:5.7
environment:
MYSQL_DATABASE: jobs_development
MYSQL_USER: tomy
MYAPP_DATABASE_PASSWORD: jamjam
volumes:
- ./.data/mysql:/var/lib/mysql
- ./my.cnf.local:/etc/mysql/my.cnf
ports:
- 3307:3306
volumes:
bundle:
driver: local
FROM centos:centos6.9
MAINTAINER keisuke
ENV PATH $PATH:/usr/bin
RUN rpm -ivh http://nginx.org/packages/centos/6/noarch/RPMS/nginx-release-centos-6-0.el6.ngx.noarch.rpm
RUN rpm -Uvh https://rpm.nodesource.com//pub_8.x/el/6/x86_64/nodejs-8.9.4-1nodesource.x86_64.rpm
RUN yum -y update
RUN yum -y install nginx gcc gcc-c++ git openssl-devel readline-devel zlib-devel mysql-devel wget
RUN git clone https://github.com/sstephenson/rbenv.git ~/.rbenv
RUN git clone https://github.com/sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build
RUN wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-7.3.0/gcc-7.3.0.tar.gz
RUN tar zxvf gcc-7.3.0.tar.gz
WORKDIR gcc-7.3.0
RUN pwd
RUN ./contrib/download_prerequisites
RUN mkdir build
WORKDIR build
RUN ../configure --enable-languages=c,c++ --prefix=/usr/local --disable-bootstrap --disable-multilib
RUN make
RUN make install
RUN echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
RUN echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
WORKDIR /usr/share/nginx/html
RUN source ~/.bash_profile && rbenv install 2.5.0 && rbenv rehash && rbenv global 2.5.0 && ruby -v && gem install bundler
RUN cp /usr/local/lib64/libstdc++.so.6 /usr/lib64/
CMD ["/bin/bash"]
就是这个样子,由于Web服务器是nginx,所以配置文件也会被挂载和使用。
GitHub 示例代码