Home Docker Docker Compose与dockerfile的同时使用
Post
Cancel

Docker Docker Compose与dockerfile的同时使用

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
This post is licensed under CC BY 4.0 by the author.