在digitalocean上有一个dropplet(vps),dropplet是使用dokku模板构建的.经过一系列的指导,我能够把一切都搞定.至少我是这么认为的.在git push之后的构建期间出现问题.日志在这里:
$ git push dokku master
Counting objects: 64, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (57/57), done.
Writing objects: 100% (64/64), 14.68 KiB | 0 bytes/s, done.
Total 64 (delta 4), reused 0 (delta 0)
remote: -----> Cleaning up...
remote: -----> Building ** from herokuish...
remote: -----> Adding BUILD_ENV to build environment...
remote: -----> Fetching custom buildpack
remote: -----> Node.js app detected
remote: -----> Installing node
remote: -----> Installing meteor
remote: Downloading Meteor distribution …
Run Code Online (Sandbox Code Playgroud) 使用Dokku在Digital Ocean上运行Rails 4应用程序.用户可以通过回形针上传图像.我可以上传图像,应用程序运行良好并显示所有图像.一旦我做了一个像文本更改的小改动,我运行$ git push dokku master,所有上传的图像404.
模型:
class ProductImage < ActiveRecord::Base
has_attached_file :image, default_url: "/images/:style/missing.png",
:path =>":rails_root/public/system/:attachment/:id/:basename_:style.:extension",
:url =>"/system/:attachment/:id/:basename_:style.:extension",
styles: { thumb: ["64x64#", :jpg], medium: ['200x200>', :jpg],
large: ['400x400>', :jpg] }
validates_attachment_content_type :image, content_type: /\Aimage\/.*\Z/
belongs_to :product
end
Run Code Online (Sandbox Code Playgroud)
我有rails_12factor gem.这是配置文件:
Rails.application.configure do
config.cache_classes = true
config.eager_load = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present?
config.assets.js_compressor = :uglifier
config.assets.compile = true
config.assets.digest = true
config.log_level = :debug
config.i18n.fallbacks = true
config.active_support.deprecation = :notify
config.log_formatter = …
Run Code Online (Sandbox Code Playgroud) 以前,要访问正在运行的 dokku 实例中的文件,我会运行:
docker ps
获取容器 ID,然后
ls /var/lib/docker/aufs/diff/<container-id>/app/...
注意:我只是使用 'ls' 作为示例命令。我最终想引用一个特定的文件。
这肯定已更改,因为无法再通过此路径访问容器 ID。该文件夹中有大量目录,但没有一个目录与任何正在运行的容器相匹配。
在这种情况下,为整个容器安装一个卷似乎有点矫枉过正。我知道我可以使用dokku run project-name ls
, 和访问文件系统docker exec <container-id> ls
,但这些都不能满足我的用例。
为了更全面地解释一下,在我的 dokku 项目中,我有一些 .sql 文件用于引导我的 postgres 数据库。这些文件git push
与项目的其余部分一起推送。
我希望使用 postgres dokku 插件来运行以下内容:
dokku postgres:connect db-name < file-name.sql
这是我以前一直在使用的:
dokku postgres:connect db-name < /var/lib/docker/aufs/diff/<container-id>/app/file-name.sql
但这不再有效。
对此有何想法?我在这一切都错了吗?
非常感谢您的任何想法。
我目前正在 dokku 实例上部署 Angular4 应用程序,但是,我不断收到此错误 ! [remote rejected] develop -> master (pre-receive hook declined)
。
我正在从开发分支部署到主分支,所以我运行部署命令 git push mediafactory develop:master
我正在通过 Dockerfile 进行部署,看起来像这样;
FROM node:carbon
RUN mkdir -p /opt/app
WORKDIR /opt/app
COPY package*.json ./
RUN npm install --save @angular/cli@1.3.0
RUN npm install --only=production
COPY .angular-cli.json .
COPY . .
RUN ng build --aot -prod
ENV APP_ID setYourAppId
ENV MASTER_KEY setYourMasterKey
ENV DATABASE_URI setMongoDBURI
EXPOSE 1337
CMD ["npm", "start"]
Run Code Online (Sandbox Code Playgroud)
我试过跑步
sudo wget -O /etc/init/docker.conf https://raw.github.com/dotcloud/docker/master/contrib/init/upstart/docker.conf
sudo service docker restart
Run Code Online (Sandbox Code Playgroud)
但是,似乎并不能解决问题。