코딩/Server

Docker를 이용한 서버 배포

eunslog 2023. 10. 11. 02:03

aws 서버 생성 및 PuTTY setting 보려면 이전 글 참고

2023.10.09 - [코딩] - AWS 서버 배포 - 상

 

AWS 서버 배포 - 상

서버 생성은 이전 글을 참고하면 된다. 2023.10.09 - [코딩] - AWS 서버 생성, EC2 생성 (프리티어 기준, 최신 버전) AWS 서버 생성, EC2 생성 (프리티어 기준, 최신 버전) AWS의 계정은 이미 준비되었다고 가

codingtoday.tistory.com

 

Docker 설치 및 가입은 되어있다고 가정한다.

 

ubuntu에서 도커 설치법 -

https://docs.docker.com/engine/install/ubuntu/

 

Install Docker Engine on Ubuntu

Jumpstart your client-side server applications with Docker Engine on Ubuntu. This guide details prerequisites and multiple methods to install Docker Engine on Ubuntu.

docs.docker.com

1. 먼저.. 사용하는 IDE에서 Dockerfile 생성

이 코드를 삽입한다.

FROM openjdk:17-jdk
ARG JAR_FILE=build/libs/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java", "-Dspring.profiles.active=docker", "-jar", "app.jar"]

 

2.  빌드

build.gradle에  plain-jar 생성방지를 위해 다음과 같은 코드를 작성한다.

jar.enabled = false

 

그리고 터미널창에

./gradlew clean build -x test 입력

다음과 같이 jar 파일이 생성된다!

 

3. 도커 이미지 생성

docker build -f Dockerfile -t docker이미지이름:태그이름 .

명령어 입력

 

docker push docker이미지이름:태그이름 입력

 

docker desktop으로 보면 이렇게 생성됨.

 

4. putty에 들어감.

docker 설치

-1. 우분투 시스템 패키지 업데이트

sudo apt-get update

-2. 필요한 패키지 설치

 

sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common

-3. Docker의 공식 GPG키 추가

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

-4. Docker의 공식 apt 저장소 추가

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

-5. 시스템 패키지 업데이트

sudo apt-get update

-6. Docker 설치

sudo apt-get install docker-ce docker-ce-cli containerd.io

-7. Docker 설치 확인

-7.1 도커 실행상태 확인

sudo systemctl status docker

-7.2 도커 실행

sudo docker run hello-world

 

mysql 설치 참고

https://lucas-owner.tistory.com/47

 

5. 서버 접속시 입력

docker pull docker이미지이름:태그이름 입력


docker images 입력하면 가지고 있는 도커 이미지들 나옴

docker run 실행

기본 포맷:

$ docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARGS...]
$ docker run [옵션] IMAGE [명령어] [인자]

 

나는

docker run -d -p 8080:8080 이미지이름:태그이름

으로 입력해줬다.

 

-d는 백그라운드에서 실행한다는 의미고

호스트에 8080으로 접속시, 컨테이너 내부의 8080 포트로 자동 접속한다는 뜻이다.

 


docker ps 실행중인 컨테이너 볼 수 있음.
docker logs 컨테이너 아이디 하면 로그 볼 수 있음.

 

--

sudo docker run -d -p 8080:8080 이미지이름:태그이름  명령어 입력시

 


Unable to find image ' 이미지이름:태그이름 ' locally
docker: Error response from daemon: pull access denied for 이미지이름, repository does not exist or may require 'docker login': denied: requested access to the resource is denied.
See 'docker run --help'.

이런 오류가 뜰 수 있음

 

아래 참고

2023.11.13 - [코딩/Error] - [docker error] permission denied while trying to connect to the Docker daemon socketat unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/auth":dial unix /var/run/docker.sock: connect: permission denied

 

[docker error] permission denied while trying to connect to the Docker daemon socketat unix:///var/run/docker.sock: Post "http:/

도커 실행을 위해 sudo docker run -d -p 8080:8080 이미지이름:태그이름 을 입력했는데.. Unable to find image ' 이미지이름:태그이름 ' locally docker: Error response from daemon: pull access denied for 이미지이름, repository

codingtoday.tistory.com