如何在Dockerfile中为依赖于/dev/tty*文件的包运行dpkg
我必须在Rails容器中安装一个打印机,这样我的Rails应用程序就可以将作业打印到80毫米纸卷打印机上 我使用的是rails 2.6:buster图像 问题是:当安装这个包时,它抛出一个错误,/dev/tty[something]不存在 当我在容器中设置卷/dev:/dev时,它是固定的,我可以将它安装在docker compose run rails_app dpkg-I…/this-package.deb上 但我在想:如何在Dockerfile中为依赖于/dev/tty*文件的包运行dpkg,docker,docker-compose,Docker,Docker Compose,我必须在Rails容器中安装一个打印机,这样我的Rails应用程序就可以将作业打印到80毫米纸卷打印机上 我使用的是rails 2.6:buster图像 问题是:当安装这个包时,它抛出一个错误,/dev/tty[something]不存在 当我在容器中设置卷/dev:/dev时,它是固定的,我可以将它安装在docker compose run rails_app dpkg-I…/this-package.deb上 但我在想: 在容器启动后安装此软件包是否明智?如果是这种情况,我应该将其添加到en
Dockerfile
FROM ruby:2.6
RUN mkdir -p /app/ncommerce_api
WORKDIR /app/ncommerce_api
COPY Gemfile Gemfile.lock ./
RUN gem install bundler
RUN bundle install --binstubs
RUN apt-get update -qq
RUN apt-get install -y redis-tools cups
COPY . .
COPY docker-entrypoint.sh /usr/bin/
RUN chmod +x /usr/bin/docker-entrypoint.sh
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["rails", "server", "-b", "0.0.0.0"]
和我的docker compose.yml
version: '3'
services:
mysql_instance:
image: 'mysql:5.7'
environment:
MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
networks:
- backend
volumes:
- 'db_vol:/var/lib/mysql'
redis_instance:
image: 'redis:buster'
networks:
- backend
volumes:
- 'redis_vol:/data'
rails_app:
depends_on:
- 'mysql_instance'
- 'redis_instance'
build: .
env_file:
- '.env'
- '.env.docker'
ports:
- '3000:3000'
- '3009:631'
networks:
- backend
- frontend
volumes:
- 'app_vol:/app/ncommerce_api'
- '/dev:/dev'
networks:
backend:
frontend:
volumes:
db_vol: {}
redis_vol: {}
app_vol: {}