eclipse/cpp_gcc的Dockerfile所在镜像地址:https://github.com/eclipse/che-dockerfiles/blob/master/recipes/cpp_gcc/Dockerfile
Dockerfile:
# Copyright (c) 2012-2018 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Red Hat, Inc. - initial API and implementation
FROM eclipse/stack-base:ubuntu
ENV CLANGD_VERSION="6.0"
RUN wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - && \
sudo apt-add-repository "deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-${CLANGD_VERSION} main" && \
sudo apt-get update && \
sudo apt-get install g++ gcc make gdb gdbserver clang-tools-${CLANGD_VERSION} -y && \
sudo apt-get clean && \
sudo apt-get -y autoremove && \
sudo rm -rf /var/lib/apt/lists/* && \
sudo ln -s /usr/bin/clangd-${CLANGD_VERSION} /usr/bin/clangd
其依赖于eclipse/stack-base:ubuntu,其地址https://github.com/eclipse/che-dockerfiles/tree/master/recipes/stack-base/ubuntu
Dockerfile:
# Copyright (c) 2012-2018 Red Hat, Inc.
# This program and the accompanying materials are made
# available under the terms of the Eclipse Public License 2.0
# which is available at https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Red Hat, Inc. - initial API and implementation
FROM ubuntu:16.04
ENV JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-amd64
ENV PATH=$JAVA_HOME/bin:$PATH
RUN apt-get update && \
apt-get -y install \
locales \
rsync \
openssh-server \
sudo \
procps \
wget \
unzip \
mc \
ca-certificates \
curl \
software-properties-common \
python-software-properties \
bash-completion && \
mkdir /var/run/sshd && \
sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd && \
echo "%sudo ALL=(ALL) NOPASSWD: ALL" >> /etc/sudoers && \
# Adding user to the 'root' is a workaround for https://issues.jboss.org/browse/CDK-305
useradd -u 1000 -G users,sudo,root -d /home/user --shell /bin/bash -m user && \
usermod -p "*" user && \
add-apt-repository ppa:git-core/ppa && \
add-apt-repository ppa:openjdk-r/ppa && \
apt-get update && \
sudo apt-get install git subversion -y && \
apt-get clean && \
apt-get -y autoremove && \
sudo apt-get install openjdk-8-jdk-headless=8u171-b11-0ubuntu0.16.04.1 openjdk-8-source=8u171-b11-0ubuntu0.16.04.1 -y && \
sudo update-ca-certificates -f && \
sudo sudo /var/lib/dpkg/info/ca-certificates-java.postinst configure && \
apt-get -y clean && \
rm -rf /var/lib/apt/lists/*
ENV LANG en_GB.UTF-8
ENV LANG en_US.UTF-8
USER user
RUN sudo locale-gen en_US.UTF-8 && \
svn --version && \
cd /home/user && ls -la && \
sed -i 's/# store-passwords = no/store-passwords = yes/g' /home/user/.subversion/servers && \
sed -i 's/# store-plaintext-passwords = no/store-plaintext-passwords = yes/g' /home/user/.subversion/servers
COPY open-jdk-source-file-location /open-jdk-source-file-location
EXPOSE 22 4403
WORKDIR /projects
# The following instructions set the right
# permissions and scripts to allow the container
# to be run by an arbitrary user (i.e. a user
# that doesn't already exist in /etc/passwd)
ENV HOME /home/user
RUN for f in "/home/user" "/etc/passwd" "/etc/group" "/projects"; do\
sudo chgrp -R 0 ${f} && \
sudo chmod -R g+rwX ${f}; \
done && \
# Generate passwd.template \
cat /etc/passwd | \
sed s#user:x.*#user:x:\${USER_ID}:\${GROUP_ID}::\${HOME}:/bin/bash#g \
> /home/user/passwd.template && \
# Generate group.template \
cat /etc/group | \
sed s#root:x:0:#root:x:0:0,\${USER_ID}:#g \
> /home/user/group.template && \
sudo sed -ri 's/StrictModes yes/StrictModes no/g' /etc/ssh/sshd_config
COPY ["entrypoint.sh","/home/user/entrypoint.sh"]
ENTRYPOINT ["/home/user/entrypoint.sh"]
CMD tail -f /dev/null
entrypoint.sh:
#!/bin/bash
# Copyright (c) 2012-2018 Red Hat, Inc.
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which is available at http://www.eclipse.org/legal/epl-2.0.html
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Red Hat, Inc. - initial API and implementation
set -e
export USER_ID=$(id -u)
export GROUP_ID=$(id -g)
if ! grep -Fq "${USER_ID}" /etc/passwd; then
# current user is an arbitrary
# user (its uid is not in the
# container /etc/passwd). Let's fix that
cat ${HOME}/passwd.template | \
sed "s/\${USER_ID}/${USER_ID}/g" | \
sed "s/\${GROUP_ID}/${GROUP_ID}/g" | \
sed "s/\${HOME}/\/home\/user/g" > /etc/passwd
cat ${HOME}/group.template | \
sed "s/\${USER_ID}/${USER_ID}/g" | \
sed "s/\${GROUP_ID}/${GROUP_ID}/g" | \
sed "s/\${HOME}/\/home\/user/g" > /etc/group
fi
if test "${USER_ID}" = 0; then
# current user is root
/usr/sbin/sshd -D &
elif sudo -n true > /dev/null 2>&1; then
# current user is a sudoer
sudo /usr/sbin/sshd -D &
fi
exec "$@"
Comments | 0 条评论