我尝试了使用 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 示例代码