我有一个在 Docker 中运行良好的 Sinatra 应用程序:
# Image
FROM ruby:2.3.3
RUN apt-get update && \
apt-get install -y net-tools
# Install app
ENV APP_HOME /app
ENV HOME /root
RUN mkdir $APP_HOME
WORKDIR $APP_HOME
COPY Gemfile* $APP_HOME/
RUN bundle install
COPY . $APP_HOME
# Configure App
ENV LANG en_US.UTF-8
ENV RACK_ENV production
EXPOSE 9292
# run the application
CMD ["bundle", "exec", "rackup"]
Run Code Online (Sandbox Code Playgroud)
但是当我尝试添加 Redis 时:
# Redis
RUN apt-get update && apt-get install -y redis-server
EXPOSE 6379
CMD ["/usr/bin/redis-server"]
Run Code Online (Sandbox Code Playgroud)
Redis 似乎没有启动。
那么,将 Redis 添加到 Ruby ( FROM ruby:2.3.3) Docker 容器的好方法是什么?
将其分成两个容器。您可以使用 docker-compose 将它们带入公共网络。例如,这是一个示例 docker-compose.yml:
version: '2'
services:
sinatraapp:
image: sinatraapp:latest
ports:
- 9292:9292
redis:
image: redis:latest
Run Code Online (Sandbox Code Playgroud)
上面可以包含适合您环境的更多选项,并假设您的映像名称是 sinatraapp:latest,请将其更改为您构建的映像。您还需要更新您的 sinatra 应用程序,以通过主机名 redis 而不是 localhost 来调用 redis。然后运行docker-compose up -d启动这两个服务。
| 归档时间: |
|
| 查看次数: |
5814 次 |
| 最近记录: |