Docker | PHP | Apache2 | Интеграция с Дженкинсом и AWS - PullRequest
0 голосов
/ 05 февраля 2020

Ниже приведен мой Dockerfile, которому для размещения моего приложения нужны apache2 и php7. Я создаю docker изображение в Jenkins и помещаю его в AWS ECR-контейнер, используя следующие команды: -

sudo docker build --tag abcd:latest --no-cache . 
aws ecr get-login --region ap-south-1 --no-include-email | sudo bash
sudo docker tag abcd:latest 123456789.dkr.ecr.ap-south-1.amazonaws.com/abcd-ecr
sudo docker push 123456789.dkr.ecr.ap-south-1.amazonaws.com/abcd-ecr

Ошибка: - Я вижу, что IP-адреса целевой группы непрерывно истощаются.

FROM alpine:3.10
EXPOSE 443
#Installing Apache
RUN \
    apk add --no-cache \
    apache2-proxy \
    apache2-ssl \
    apache2-utils \
    curl \
    git \
    logrotate \
    openssl \
    vim \
    bash

ENV APACHE_RUN_USER www-data
ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
#Installing php && php-mysql
USER root
RUN apk --no-cache add \
        php7 \
        php7-apache2 \
        php7-ctype \
        php7-curl \
        php7-dom \
        php7-fileinfo \
        php7-ftp \
        php7-iconv \
        php7-json \
        php7-mbstring \
        php7-mysqlnd \
        php7-mysqli \
        php7-openssl \
        php7-pdo \
        php7-pdo_sqlite \
        php7-pear \
        php7-phar \
        php7-posix \
        php7-session \
        php7-simplexml \
        php7-sqlite3 \
        php7-tokenizer \
        php7-xml \
        php7-xmlreader \
        php7-xmlwriter \
        php7-zlib \
        php7-common \
        php7-opcache \
        php7-mcrypt \
        php7-cli \
        php7-gd
#creating workdir
WORKDIR /var/www/projects/abcd

#Copying Source code to docker container
COPY ./ .

#Copy the conf files into the docker container
COPY httpd.conf /etc/apache2/
COPY vhost.conf /etc/apache2/conf.d/

#Changing the source code owner to Apache
RUN chown -R apache:apache ./
RUN chown -R apache:apache /var/www/

#Mounting Volume
VOLUME /var/www/projects/abcd

CMD ["httpd","-D","FOREGROUND"]

Ниже приведен код terraform, используемый для создания балансировщика нагрузки: -

resource "aws_lb" "lb" {
  name = "lb"
  security_groups    = var.security_group
  subnets            = data.aws_subnet_ids.pub.ids
  load_balancer_type = "application"
  internal           = false
  tags = {
    Project     = var.project
    Environment = var.environment
  }
}
resource "aws_lb_listener" "lb_listner_80" {
  load_balancer_arn = aws_lb.lb.arn
  port              = "80"
  protocol          = "HTTP"

  default_action {
    type = "redirect"

    redirect {
      port        = "443"
      protocol    = "HTTPS"
      status_code = "HTTP_301"
    }
  }
}

resource "aws_lb_listener" "lb_listner_443" {
  load_balancer_arn = aws_lb.lb.arn
  port              = "443"
  protocol          = "HTTPS"
  ssl_policy        = "ELBSecurityPolicy-2016-08"
  certificate_arn   = data.aws_acm_certificate.cert.arn

  default_action {
    type = "forward"
    target_group_arn = var.target_group_arn_wp

  }
}

vhost.conf file

<VirtualHost *:80>
  DocumentRoot "/var/www/projects/abcd”
  ServerAdmin ec2-user@localhost
  ServerName abcd.zeecdn.com
<Directory /var/www/html/>
    AllowOverride All
    Require all granted
    Allow from all
  </Directory>
  ErrorLog "/var/log/apache2/error_log_jvwp"
  CustomLog "/var/log/apache2/access_log_jvwp" combined
</VirtualHost>
...