본문 바로가기

기타

[기타] Docker이미지를 이용한 NextCloud 구성

728x90

---------------------------------------------

 

21.05.26 추가

 

일년만에 다시 이 글을 수정하는데 

 

새 서버에 구축하다가 빠진내용이 있는 거 같아 추가합니다. 우선 Docker-compose.yaml파일 내용을 공유합니다.

 

version: '2'

volumes:
  nextcloud:
  db:
  mariadb_volume:
  nextcloud_volume:

services:
  db:
    image: mariadb
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    restart: always
    volumes:
#      - ./home/mariadb_volume:/var/lib/mysql
      - mariadb_volume:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD="비번"
      - MYSQL_PASSWORD="비번"
      - MYSQL_DATABASE="디비이름"
      - MYSQL_USER="디비유저"

  app:
    image: nextcloud
    ports:
      - 8080:80
      - 9000:443
    links:
      - db
    volumes:
#      - ./home/nextcloud_volume:/var/www/html
      - nextcloud_volume:/var/www/html
    restart: always

 

그리고 ssl 인증관련해서는 처음글에서는 자체 서명된 인증서를 사용했지만 사실 굉장히 귀찮습니다. 그냥 쓰시는게 나중에 업데이트도 편합니다. 

 

그리고 처음 들어가실때 예를들면 프록시서버가 있는 경우 다른 서버에서 접속할 때 신뢰할 수 없는 도메인이라고 뜨는데 이부분은 

 

넥스트 클라우드 컨테이너안에 접속해서 /config/config.php 파일에 프록시 서버를 추가해줘야합니다. 

 

그럼 수고하십쇼

 

---------------------------------------------

 

 

 

 

 

 

 

 

 

안녕하세요 2주만에 포스팅입니다.

 

이번 포스팅은 너무 뜬금없지만 Docker Image를 사용해서 NextCloud를 구성하는 방법에 대해 포스팅해보려합니다.

 

기존 Docker hub에 올라와 있는 이미지는 ssl 적용이 안되어있는데 이번 포스팅에서는 오피셜 이미지를 다운받아 ssl을 적용시키고 이미지로 만드는 방법까지 설명해보려합니다.

 

---------------------------------------

20.06.26 추가

 

도커허브에 올라와있는 공식 이미지에서 ssl이 적용된 nextcloud가 있는데 만약 이 포스팅과 다른 방법으로 해보고 싶으시다면 아래 유튜브를 참고하시면 좀 더 편하게 구축하실 수 있습니다. 다만 주의하실점은 밑에 적어둔것과 마찬가지로 db부터 먼저 실행해야하는 점 입니다.

 

https://www.youtube.com/watch?v=uR5Tn_blKwI&list=LLbRRIaMJUClvjmZO5BJ7UdQ&index=12&t=0s

 

--------------------------------------

 

nextcloud 이미지를 통한 컨테이너 실행

 

 

https://hub.docker.com/_/nextcloud

 

nextcloud - Docker Hub

Supported tags and respective Dockerfile links 15.0.13-apache, 15.0-apache, 15-apache, 15.0.13, 15.0, 15 15.0.13-fpm-alpine, 15.0-fpm-alpine, 15-fpm-alpine 15.0.13-fpm, 15.0-fpm, 15-fpm 16.0.6-apache, 16.0-apache, 16-apache, stable-apache, production-apach

hub.docker.com

 

해당 이미지가 공식 official 이미지인데

 

Docker 환경에 이미지를 다운받아 줍니다. 

 

docker pull nextcloud

 

이미지를 실행하고 컨테이너 bash로 들어가 줍니다.

 

docker run -d -p 8080:80 nextcloud
docker exec -it <컨테이너 명> /bin/bash

 

자 nextcloud 기본 이미지는 apache2를 base로 하고있기 때문에 구글에 apache2 ssl적용을 검색하여 적용해줍시다.

 

 

저같은 경우는 해당 블로그의 글을 참고하였습니다.

 

https://webdir.tistory.com/228

 

[Ubuntu] 우분투 Apache(아파치) SSL 적용

HTTPS로 시작하는 보안이 강화된 HTTP를 보신적이 있을 겁니다. 국내보다는 국외에서 활발히 사용되고 있는 실정입니다. 관련하여 자세한 이론적인 설명은 아래의 링크들로 대체합니다. http://opentutorials.org/..

webdir.tistory.com

 

굉장히 잘 설명되어있습니다. 근데 다만 주의하실 점은 Docker image를 다운받았기 때문에 기본 명령어들이 설치되어 있지가 않습니다.

 

apt update와 vim 등의 여러가지 모듈을 추가적으로 설치하여 진행합니다.

 

 

자 ssl적용이 끝났으면 편집된 이미지를 새롭게 저장합니다.

 

편집된 컨테이너를 이미지로 저장

 

 

 

우선 실행되어있는 컨테이너를 stop시키고 commit명령어를 통해 이미지로 저장합니다. 

 

docker commit <컨테이너 이름> <저장할 이미지이름>

해당 이미지를 docker hub에 저장합니다.

 

docker push <이미지 이름>

도커 허브에 업로드하기위한 자세한 명령어는 이미 많이 다루었기에 따로 여기서 설명하지 않겠습니다.

 

자 이제 Docker-Compose를 통해 배포해봅시다.

 

일전에 도커컴포즈에 관한 글을 포스팅했습니다. 대략적으로 설명해 놓았으니 참고하실분들은 참고하시면 됩니다.

 

docker hub에 올려져있는 nextcloud 공식 이미지를 보면 docker compose에 관한 부분도 있지만 안되는 부분이 있었기 때문에 제가 따로 올려봅니다.

 

 

docker compose

mariadb에 대한 환경변수지정과

위의 도커 컴포즈 파일은 제가 호스트 컴퓨터와 볼륨마운트를 해놓은 부분입니다.

입맛에 맞게 변경하시면 될 거 같습니다.

 

그럼 이제 대략적인 그림으로 나타내어보면

 

Docker Compose를 이용한 Nextcloud 환경구성

위의 그림처럼 됩니다.

 

Docker compose명령으로 실행할때 주의할 점이 있습니다.

mariadb 설정이 끝나기 전에  nextcloud에 접속하여 설정을 들어가버리면 오류가 발생합니다.

docker stats이나 docker logs -f 등의 명령어를 통해 확인을 하시고 nextcloud를 실행하시는게 좋습니다.

 

만약 계속 안되시면 docker-compose up -d db 부터 실행하고 db가 완전히 설정된 후에 nextcloud를 실행하십시오

 

이제 nextcloud로 접속하시고 설정하시면 됩니다.

 

설정하실때 DB설정 부분에서 위에서 설정한 환경변수대로 입력하시고 맨 마지막에는 maria db container의 이름을 입력해줘야합니다.

 

nextcloud 설정

 

이제 finish setup을 누르시면 설치가 완료됩니다!

반응형