docker-compose не ведет себя в соответствии с dockerfiles - PullRequest
0 голосов
/ 11 февраля 2019

Я пользователь Docker 0-го уровня, так что оставайтесь со мной на этом:

Я пытаюсь создать общую контейнерную среду с docker-compose.docker-compose.yaml выглядит следующим образом:

# docker-compose.yml

#ubuntu(16.04) + python(3)
version: '3'
services:
 ubuntu:
   image: 434c03a615a2
   build:
     context: .
     dockerfile: dockerfileBase   
   volumes:
     - "./data/data_vol/:/app"
   tty: true

#tensorflow
 tensorflow:
   image: tensorflow/tensorflow
   build:
     context: .
     dockerfile: dockerfileTensorflow
   ports:
     - "8888:8888"
   tty: true

#rstudio
 rstudio:
   image: rocker/rstudio
   build:
     context: .
     dockerfile: dockerfileRstudio1   
   environment:
     - PASSWORD=supersecret
   ports:
     - "8787:8787"
   tty: true

Насколько я могу судить, все работает, но докер-файл, с которым я импортирую Rstudio, кажется, не выполняется таким же образом внутри .yaml как это происходит вне его.Я имею в виду, что этот dockerfile Rstudio:

#pull rstudio
FROM rocker/rstudio:3.4.3
LABEL maintainer="Landsense"

#set Env variables 
ENV http_proxy=http://##.###.###.##:####
ENV https_proxy=http://##.###.###.##:####
ENV ftp_proxy=http://##.###.###.##:####
ENV TZ="Europe/Rome"

RUN apt-get update && \
  apt-get install -y \
  libgdal-dev \
  libproj-dev \
  libv8-dev \
  ssh && \
  apt-get clean all

RUN Rscript -e "install.packages('raster')"

устанавливает пакеты, когда он собран сам по себе, но не запускается при запуске из docker-compose.yaml.Кто-то может прокомментировать этот тип поведения?RSPKT!

1 Ответ

0 голосов
/ 11 февраля 2019

Если у вас есть и image, и build в сервисе docker-compose, приоритет отдается image.В вашем сценарии, поскольку у вас есть image: rocker/rstudio в вашем файле компоновки, он извлечет изображение rocker/rstudio:latest из docker-hub .Но что вам нужно, так это построить изображение поверх rocker/rstudio изображения (в Dockerfile оно использовалось в качестве базового изображения).

Не рекомендуется помечать изображение как существующий тегв docker-hub (вы можете столкнуться с трудностями, поскольку неправильное изображение кэшируется в ваших локальных образах докера, как вы видели здесь).Сначала решите, действительно ли вы хотите назвать свое изображение (в противном случае compose пометит изображение для вас, где тег включает часть имени вашего сервиса, чтобы вы могли легко идентифицировать).Если вы хотите использовать его следующим образом с префиксом в теге изображения.То же самое относится и к двум другим службам.

image: localhost/rocker/rstudio
build:
     context: .
     dockerfile: dockerfileRstudio1  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...