인프라

docker APM + gitlab + gitlab-runner 오류발생시

소행성왕자 2023. 2. 9. 10:06

. 분명 전달에는 모든게 (  ) 잘되었는데 다음날 보니 PHP 에서 DB 접속이 안됨

  - 도커 컨테이너 조회 

[cofor@localhost apm_each]$ docker ps -a
CONTAINER ID   IMAGE                         COMMAND                  CREATED         STATUS                       PORTS                                                                          NAMES
72c9256ece57   apm_each_apache2              "apachectl -D FOREGR…"   4 minutes ago   Up 4 minutes                 0.0.0.0:9022->22/tcp, :::9022->22/tcp, 0.0.0.0:9080->80/tcp, :::9080->80/tcp   apache2
3120c8eec3ab   mysql:8.0                     "docker-entrypoint.s…"   4 minutes ago   Up 4 minutes                 0.0.0.0:3306->3306/tcp, :::3306->3306/tcp, 33060/tcp                           mysql
1416567744ff   gitlab/gitlab-runner:latest   "/usr/bin/dumb-init …"   17 hours ago    Exited (0) 6 minutes ago                                                                                    gitlab-runner
c9e9288ebef8   gitlab/gitlab-ce:latest       "/assets/wrapper"        23 hours ago    Exited (137) 5 minutes ago                                                                                  gitlab

gitlab 과 gitlab-runner  중지

docker stop gitlab-runner
docker stop gitlab

docker-compose 중지 및 다시 시작

docker-compose down
docker-compose up -d

document_root 의 index.php 살펴봄

vi Project/apache2/html/index.php

<?php

echo 'safasf 77<br>';

$conn = mysqli_connect(
        '220.72.212.xxx',
        'crawl',
        'crawl',
        'crawl',
    );

    if(mysqli_connect_error()) {
        echo "Failed to Connect Mysql: ".mysqli_connect_error();
    }
    $sql = "SELECT VERSION()";
    $result = mysqli_query($conn, $sql);
    $row = mysqli_fetch_array($result);
    print_r($row["VERSION()"]);




phpinfo();

gitlab 과 gitlab-runner 컨테이너 시작

docker start gitlab
docker start gitlab-runner
[cofor@localhost apm_each]$ docker start gitlab-runner Error response from daemon: network 4a98a9d0ada52b83198310a49ae57ddcd0f9435646835c61cfac9791dda850f0 not found Error: failed to start containers: gitlab-runner

gitlab-runner 컨테이너 지우고 다시 실행

#네트워크 조회
docker network ls

#gitlab-runner 삭제
docker rm gitlab-runner

#gitlab-runner 컨테이너 생성
docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  --network apm_each_apm_net \
  gitlab/gitlab-runner:latest

apache2 컨테이너 ip 확인

docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' apache2
172.29.0.3

apache2 컨테이너 접속 및 ssh 설정

# apache2 컨테이너 접속
docker exec -it apache2 bash

# git 설치
apt install -y git

# ssh 설치 및 설정
apt install update
apt install -y openssh-server

# PermitRootLogin yes 추가
vi /etc/ssh/sshd_config
...
...

PermitRootLogin yes 

# ssh start
service ssh start

# root passwd change
passwd


# git 설정
cd /var/www/html
git pull
git config --global --add safe.directory /var/www/html
git pull
# 비밀번호 입력후 
git config credential.helper store

gitlab-runner 컨테이너에서 CI/CD 시 암호 없이 로그인 만들어 줘야 함

# gitlab-runner 컨테이너 접속
docker exec -it gitlab-runner bash

# gitlab-runner 계정 전환
su - gitlab-runner


# ssh key 생성
ssh-keygen -t rsa

# ssh key copy 
ssh-copy-id root@172.29.0.3
ssh-copy-id root@apache2	# 컨테이너 이름


#apache2 서버 접속 root 비번 물어보고 정상적으로 접속된다.
ssh root@172.29.0.3
ssh root@apache2     #컨테이너 이름

 

CI/CD 성공

여전히 php 에서 DB 접속오류

mysql 컨테이너 접속

docker exec -it mysql bash
mysql -uroot -p
show databases 
mysql> show databases;
+---------------------+
| Database            |
+---------------------+
| Z_README_TO_RECOVER |
| information_schema  |
| mysql               |
| performance_schema  |
| sys                 |
+---------------------+

헉 처음 셋팅한 DB 가 날라갔다.

db create

create database crawlDB;
create user 'crawl'@'localhost' identified by 'crawl';
grant all privileges on *.* to 'crawl'@'localhost' with grant option;

 

성공