发布时间:2020-07-02 17:16:40来源:阅读:
本快速入门指南介绍如何使用docker compose配置和运行一个Rails/PostgreSQL app。
定义用来构建app的三个文件。首先由于app是运行在包含它的所有依赖的容器内,你需要定义哪些文件需要包括在容器内。这个可以使用Dockerfile来完成。这个Dockerfile包括:
FROM ruby:2.3.3 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs RUN mkdir /myapp WORKDIR /myapp ADD Gemfile /myapp/Gemfile ADD Gemfile.lock /myapp/Gemfile.lock RUN bundle install ADD . /myapp
上面把应用程序代码放到了镜像内,这个镜像将用来运行一个包含Ruby,Bundler和其所有的依赖的容器。
下一步,创建一个只加载Rails的bootstrap Gemfile文件。在后面将由rails new覆盖它。
source 'http://rubygems.org' gem 'rails', '5.0.0.1'
需要一个空的Gemfile.lock文件,构建Dockerfile用到。
touch Gemfile.lock
最后,开始创建docker-compose.yml文件。这个文件描述了你的app由什么服务构建(数据库和web app),如何获取每一个的镜像以及需要链接它们到一起和暴露web app的端口的配置。
version: '2' services: db: image: postgres web: build: . command: bundle exec rails s -p 3000 -b '0.0.0.0' volumes: - .:/myapp ports: - "3000:3000" depends_on: - db
准备好那三个文件后,就可以使用docker-compose run来生成Rails skeleton app了:
docker-compose run web rails new . --force --database=postgresql --skip-bundle
首先,compose使用Dockerfile构建web服务的镜像。然后使用那个镜像生成容器,在容器内运行rails new命令。一旦完成,将生成一个全新的app:
$ ls -l total 56 -rw-r--r-- 1 user staff 215 Feb 13 23:33 Dockerfile -rw-r--r-- 1 user staff 1480 Feb 13 23:43 Gemfile -rw-r--r-- 1 user staff 2535 Feb 13 23:43 Gemfile.lock -rw-r--r-- 1 root root 478 Feb 13 23:43 README.rdoc -rw-r--r-- 1 root root 249 Feb 13 23:43 Rakefile drwxr-xr-x 8 root root 272 Feb 13 23:43 app drwxr-xr-x 6 root root 204 Feb 13 23:43 bin drwxr-xr-x 11 root root 374 Feb 13 23:43 config -rw-r--r-- 1 root root 153 Feb 13 23:43 config.ru drwxr-xr-x 3 root root 102 Feb 13 23:43 db -rw-r--r-- 1 user staff 161 Feb 13 23:35 docker-compose.yml drwxr-xr-x 4 root root 136 Feb 13 23:43 lib drwxr-xr-x 3 root root 102 Feb 13 23:43 log drwxr-xr-x 7 root root 238 Feb 13 23:43 public drwxr-xr-x 9 root root 306 Feb 13 23:43 test drwxr-xr-x 3 root root 102 Feb 13 23:43 tmp drwxr-xr-x 3 root root 102 Feb 13 23:43 vendor
如果这个时候或之后编辑了Gemfile,需要重新构建镜像。
docker-compose build
使用如何内容替换config/database.yml文件:
development: &default adapter: postgresql encoding: unicode database: myapp_development pool: 5 username: postgres password: host: db test: <<: *default database: myapp_test
开始启动app:
docker-compose up
如果一切正常,将会看到PostgrepSQL的输出,然后再过几秒钟,将看到
myapp_web_1 | [2014-01-17 17:16:29] INFO WEBrick 1.3.1 myapp_web_1 | [2014-01-17 17:16:29] INFO ruby 2.2.0 (2014-12-25) [x86_64-linux-gnu] myapp_web_1 | [2014-01-17 17:16:29] INFO WEBrick::HTTPServer#start: pid=1 port=3000
最后,在另一个终端创建一个数据库:
docker-compose run web rails db:create
现在app已经运行在主机的3000端口。
SimLab Composer 10(三维场景制作软件) v10.5 免费版 附安装教程
252.84M
快速CAD企业版 v2021.2 官方版
17.21M
EverythingToolbar(快速搜索文件) v0.2.3 免费版
1.3M
广联达PDF快速看图免费版 v1.9.0.0 官方版
29.9M
易学堂(快速阅读训练系统)V4.1 绿色注册版
184.8M
瞬启盒子(快速启动软件)绿色版 v2.0
1.9M
论文格式快速编排助手下载
2.03MB
闪电OCR图片文字识别软件(文档快速识别工具)2.2.8.0 免费版
43.6MB
MagicMouseTRails(自定义鼠标拖尾工具) v1.31 绿色中文版
388K
Print Maestro 4破解版
21.1 MB
SoundVolumeView
191KB
coreldrawx6下载
7 KB
2020-03-22
英国人做的《全面战争三国》为何在中国那么火?
BurnAware软件介绍
在Windows XP HOME下如何防止忘记登录密码?
扬天900(YT900)蓝牙商务伴侣充电要求
在Horizon上使用乐关联软件共享分享视频
新扬天2007机型随机键盘快捷键起何作用
为什么I750的TV输出与个别电视连接时候出现异常的现象?
Think产品无法进行无线上网的检测方法和解决方法
如何安装Windows XP操作系统