Docker Community Forums

Share and learn in the Docker community.

Dockerfile - SSH + Apache (not work)


#1

Hello,
I will need some help because I can not understand why my script.sh does not start at startup.

Arborescence

  • Dockerfile
    
  • ./config/start.sh
    
  • ./WEB/index.html
    
  • ./WEB/host-apache2.conf
    

Dockerfile

PART 0: start.sh

#!/bin/sh
/usr/sbin/sshd
/usr/sbin/apache2ctl

PART 1: Update + Install

#############################################################################
#Operating System
FROM ubuntu:18.04

#Update Distrib
RUN apt-get update

#Install SOFT
RUN apt-get install apache2 openssh-server --yes

#############################################################################

Part 2 : SSH

#############################################################################
#Setting SSH

RUN mkdir /var/run/sshd

RUN echo 'root:1234 | chpasswd

RUN sed -i ‘s/PermitRootLogin prohibit-password/PermitRootLogin yes/’ /etc/ssh/sshd_config

RUN sed ‘s@session\srequired\spam_loginuid.so@session optional pam_loginuid.so@g’ -i /etc/pam.d/sshd

ENV NOTVISIBLE “in users profile”

RUN echo “export VISIBLE=now” >> /etc/profil

#############################################################################

PART 2: WEB

#############################################################################
COPY./WEB/host-apache2.conf /etc/apache2/sites-enabled/000-default.conf
COPY./WEB/index.html /var/www/test/index.html
#############################################################################

PART 3: Copy Script start SSH & Apache

#############################################################################
COPY “./config/start.sh” “/start.sh”
RUN chmod 777 “/start.sh”
#############################################################################

Part 4:: Expose PORT 22 (SSH) & 80 (WEB HTTP)

#############################################################################
EXPOSE 80 22
#############################################################################

PART 5: Start Script container

CMD /start.sh

PART 6: CREATE & START CONTAINER

docker create --name=“cn_dev” -p 8000:80 -p 3306:22 dev_image && docker start cn_dev && docker ps

PART 7: Check

CONTAINER ID:afc5ab8cd182
IMAGE:dev_image
COMMAND: “/bin/sh -c start.sh…”
CREATED: 2 seconds ago
STATUS: Up Less than a second
PORTS: 0.0.0.0:3306->22/tcp | 0.0.0.0:8000->80/tcp
NAMES: cn_dev

PART 8: TEST

http://localhost:8000
ssh root@localhost -p3306

Resultat

WEBSITE Not Work
SSH Not Work


#2

**Start.sh **

Open with Notepad++
Menu Edit > Convert Line Breaks > Convert to Unix format
Save


(Victorbarajas89) #3

does your container exit with code 0 ? in some cases your script executes correctly but it take process number 1 instead you ssh or apache process


(Tekki) #4

You need a process running in the foreground, for example apache2ctl -D FOREGROUND, otherwise the container will terminate as soon as your script is executed. See “STATUS: Up Less than a second”.