#docker #dockerfile #docker-image
#docker #dockerfile #docker-image
Вопрос:
У меня есть следующий файл docker для создания образа docker, где мне нужно установить несколько компиляторов. Но почему-то я получаю ошибки при установке таких пакетов, как php, java, g и т. Д
Вот файл docker
############################################################
# Dockerfile to build sandbox for executing user code
# Based on Ubuntu
############################################################
FROM ubuntu:latest
# Update the repository sources list
RUN echo "deb http://archive.ubuntu.com/ubuntu trusty main universe" > /etc/apt/sources.list
RUN apt-get update
#RUN apt-get upgrade
#Install all the languages/compilers we are supporting.
RUN apt-get install -y gcc
RUN apt-get install -y g
RUN apt-get install -y php5-cli
RUN apt-get install -y ruby
RUN apt-get install -y python
RUN apt-get install -y mono-xsp2 mono-xsp2-base
RUN apt-get install -y mono-vbnc
RUN apt-get install -y npm
RUN apt-get install -y golang-go
RUN apt-get install -y nodejs
RUN npm install -g underscore request express jade shelljs passport http sys jquery lodash async mocha moment connect validator restify ejs ws co when helmet wrench brain mustache should backbone forever debug amp;amp; export NODE_PATH=/usr/local/lib/node_modules/
RUN apt-get install -y clojure1.4
#prepare for Java download
RUN apt-get install -y python-software-properties
RUN apt-get install -y software-properties-common
#grab oracle java (auto accept licence)
RUN add-apt-repository -y ppa:webupd8team/java
RUN apt-get update
RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections
RUN apt-get install -y oracle-java8-installer
RUN apt-get install -y gobjc
RUN apt-get install -y gnustep-devel amp;amp; sed -i 's/#define BASE_NATIVE_OBJC_EXCEPTIONS 1/#define BASE_NATIVE_OBJC_EXCEPTIONS 0/g' /usr/include/GNUstep/GNUstepBase/GSConfig.h
RUN apt-get install -y scala
RUN apt-get install -y mysql-server
RUN apt-get install -y perl
RUN apt-get install -y curl
RUN mkdir -p /opt/rust amp;amp;
curl https://sh.rustup.rs -sSf | HOME=/opt/rust sh -s -- --no-modify-path -y amp;amp;
chmod -R 777 /opt/rust
RUN apt-get install -y sudo
RUN apt-get install -y bc
RUN echo "mysql ALL = NOPASSWD: /usr/sbin/service mysql start" | cat >> /etc/sudoers
Я несколько раз пытался изменить этот код, но он по-прежнему заканчивается некоторыми ошибками, такими как
The following packages have unmet dependencies:
g : Depends: g -4.8 (>= 4.8.2-5~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
The command '/bin/sh -c apt-get install -y g ' returned a non-zero code: 100
В итоге я добавил следующие строки
RUN apt-get -f install -y libc6
RUN apt-get install -y manpages-dev
RUN apt-get install -y libc-dev-bin
RUN apt-get install -y libc6-dev
RUN apt-get install -y libstdc -4.8-dev
Но почему-то я застрял на
The following packages have unmet dependencies:
libc6-dev : Depends: libc6 (= 2.19-0ubuntu6) but 2.31-0ubuntu9.1 is to be installed
Depends: libc-dev-bin (= 2.19-0ubuntu6) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
The command '/bin/sh -c apt-get install -y libc6-dev' returned a non-zero code: 100
Также при установке php возникают следующие ошибки
php5-cli : Depends: php5-common (= 5.5.9 dfsg-1ubuntu4) but it is not going to be installed
Depends: libedit2 (>= 2.11-20080614-4) but it is not going to be installed
Recommends: php5-readline but it is not going to be installed
Я знаю, что проблема связана с некоторыми неудовлетворенными зависимостями, но каждый раз, когда я решаю одну, возникает другая. Есть ли способ установить все зависимости.
Также я получил этот файл docker из https://github.com/remoteinterview/compilebox amp; он был написан для Ubuntu 14.04, и он тоже не работал, поэтому я перешел на ubuntu: последняя версия
Я новичок в docker, поэтому я не очень разбираюсь в написании dockerfile, некоторые, пожалуйста, помогите мне обновить этот dockerfile.
Заранее спасибо
Комментарии:
1. Как исправить ошибку «удерживаемые поврежденные пакеты»: askubuntu.com/questions/223237 /…
2. Обычно лучше создавать более адаптированные образы. Обычно вы создаете образ для сборки одного приложения и устанавливаете только те компиляторы, которые необходимы приложению. Такой подход даст вам очень большое изображение, с которым будет сложно работать. (Вы можете получить лучшее сообщение об ошибке и избежать некоторых проблем с кэшированием Docker, если вы
RUN apt-get update amp;amp; apt-get install ...
используете каждый пакет в однойRUN
команде.)