Нужно создать скрипт bash: - PullRequest
0 голосов
/ 03 июня 2018

-Autoinstall docker.

-Получить 3 образа докера (Apach, Nginx, MariaDB).

-Создать docker-compose.yml файл и настроить его.

-Услугидолжно работать: Apache: порт 8080 Nginx: порт 80 MariaDB: порт 4000.

#!bin/bash
sudo yum -y update
sudo tee >/etc/yum.repos.d/docker.repo <<-EOF
[dockerrepo]
name=Docker Repository
baseurl=https://yum.dockerproject.org/repo/main/centos/7/
enabled=1
gpgcheck=1
gpgkey=https://yum.dockerproject.org/gpg
EOF
sudo yum search docker-engine
sudo yum install -y docker-engine
sudo systemctl enable docker.service && systemctl start docker.service
sudo yum -y install epel-release
sudo yum -y install python-pip
sudo pip install docker-compose
sudo tee >/home/ash/docker_project/Dockerfile <<-EOF
FROM httpd:2.4
COPY ./public-html/ /usr/local/apache2/htdocs

FROM nginx
COPY nginx.conf /etc/nginx/nginx.conf

EOF
cd /home/ash/docker_project
sudo tee >/home/ash/docker_project/docker-compose.yml <<-EOF
 version: '3' 

 services:
    apache: 
      image: httpd:2.4 
      ports: 
      - "8080:8080" 
      volumes: 
      - ./src:/usr/local/apache2/htdocs 

    web: 
      image: nginx
      volumes:
       - ./mysite.template:/etc/nginx/conf.d/mysite.template
      ports: 
       - "80:80" 

      command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d && nginx -g 'daemon off;'"

    db: 
      image: mariadb 
      ports: 
      - "4000:4000"
EOF
docker-compose up -d

Похоже, что скрипт работает нормально, в терминале нет ошибок, поэтому мой вопрос - почему я не вижу стартовую страницуapache, когда я иду на localhost: 8080 то же самое с nginx и MariaDB?

Весь вывод очень длинный, но вот основной материал

Starting docker_project_apache_1 ... done
Starting docker_project_web_1    ... done
Starting docker_project_db_1     ... done

Также, когда я бегу docker imagesя вижу этот список:

REPOSITORY          TAG                 IMAGE ID            CREATED
bitnami/apache      latest              569eec9f6f5c        4 days ago       
mariadb             latest              4828ff028cad        8 days ago
nginx               latest              ae513a47849c        4 weeks ago 
httpd               2.4                 fb2f3851a971        4 weeks ago   

1 Ответ

0 голосов
/ 03 июня 2018

Образ Apache httpd docker предоставляет порт 80, а не 8080, см. здесь или здесь .
Просто измените строку с портами apache в docker-compose:

  image: httpd:2.4 
  ports: 
  - "8080:8080" 

до:

  image: httpd:2.4 
  ports: 
  - "8080:80" 

, и apache должен работать.

@ edit:

Для контейнера mariadb он предоставляет порт 3306.

Что касается nginx, у вас есть ошибка bash в командной строке в docker-compose в веб-сервисе.Команда bash:

envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d

приведет к ошибке bash, так как /etc/nginx/conf.d является каталогом.Возможно, вы имели в виду что-то вроде:

envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/mysite.conf
...