refer to: doubao
Dockerfile: 则重于构建
docker-compose: 把多个docker 组合。
所以需要各做各的。
Dockerfile:
FROM ruby:2.6.1-stretch
WORKDIR /opt/app
COPY . .
RUN set -eux; \
sed -i 's/deb.debian.org/archive.debian.org/g' /etc/apt/sources.list; \
sed -i 's|security.debian.org|archive.debian.org/debian-security|g' /etc/apt/sources.list; \
# 移除 stretch-updates 和 stretch-security(已不存在)
sed -i '/stretch-updates/d' /etc/apt/sources.list; \
sed -i '/stretch\/updates/d' /etc/apt/sources.list; \
# 添加 stretch-backports 但不启用(可选)
echo "deb http://archive.debian.org/debian stretch-backports main" >> /etc/apt/sources.list; \
# 执行 apt-get 时跳过签名验证
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 648ACFD622F3D138 0E98404D386FA1D9; \
apt-get update --allow-insecure-repositories; \
# 注意: libcurl4-openssl-dev 代替了 libcurl4
# default-libmysqlclient-dev 代替了 libmysqlclient-dev
apt-get install -y --allow-insecure-repositories libapr1-dev libxml2-dev libxslt1-dev \
default-libmysqlclient-dev \
libcurl4-openssl-dev \
git curl build-essential libssl-dev libreadline-dev libssl-dev libreadline-dev \
ruby-dev zlib1g-dev liblzma-dev ruby-all-dev libyaml-dev libncurses5-dev libffi-dev libgdbm-dev libdb-dev
RUN gem install bundler -v 2.0.2 --no-rdoc --no-ri && \
bundle install --verbose
CMD ["tail", "-f", "/dev/null"]
docker-compose.yml:
version: '3'
networks:
xxx-network:
driver: bridge
name: xxx-network # 指定网络名称
services:
backend_api:
container_name: 'backend_api'
#image: ruby:2.6.1
build: /opt/app/backend_api
volumes:
- /opt/app/backend_api:/opt/app/backend_api
command: ["sh", "-c", "cd /opt/app && rm tmp/pids/* -rf && bundle exec rails s -p 3000 -b 0.0.0.0"]
ports:
- '127.0.0.1:3000:3000'
networks:
- exchange-network