라벨이 docker인 게시물 표시

Git Action Docker Permission Denied Error AWS(EC2) - sock

이미지
 I was trying to pull docker image from docker hub. But I got denied. I was using GitAction to deploy but failed. Run docker pull ***/***:latest 2 docker pull ***/***:latest 3 shell: /usr/bin/bash -e {0} 4 env: 5 DOCKER_IMAGE: ***/*** 6 permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.46/images/create?fromImage=***%2F***&tag=latest": dial unix /var/run/docker.sock: connect: permission denied 7 Error: Process completed with exit code 1. Connecte to EC2 and write this terminal. sudo chmod 555 /var/run/docker.sock copy Now it works.

Docker , GitHub Action을 이용해서 EC2(AWS)에 자동 배포(docker hub)하기 - React사용

이미지
 이번 글에서는 Docker와 GitHub Action을 이용해서 CI/CD를 구현하도록 하겠습니다. AWS의 EC2에 자동 배포하도록 블로그 글을 작성하겠습니다. 1. 우선사항 1) Push를 할 GitHub 저장소 생성( 링크 ) - private 2) GitHub Token 생성 - classic 방법으로 생성 - repo, workflow, write:packages, delete:packages가 선택 되어 있어야 한다. 3) AWS 계정 4) 개발 PC에 Docker가 설치 되어 있어야 한다.( Linux Link ,  Window Link ) 5) docker hub 계정(DOCKER_USERNAME) 및 비밀번호(DOCKER_PASSWORD) 대용으로 사용할 token - 만약 다수의 private repository를 운영할려면 해당 링크 를 통해 유료 결제를 해야한다. 위 우선사항이 모두 되었으면 아래는 나의 로컬 환경이다. OS : macOS Ventura 13.6.1 Docker Version : 24.0.7 Node Version : 20.10.0 1. React Project를 생성한다. ( 링크 ) 2. GitHub Repository와 연동 git init git add . git commit -m "first commit" git branch -M master git remote add origin https://github.com/Alex-Choi0/CICD-EC2-Docker.git git push -u origin master 3. Dockerfile 생성 및 테스트 1) Dockerfile 생성 FROM node:20.10.0 # 경로 설정하기 WORKDIR /app # package.json 워킹 디렉토리에 복사 (.은 설정한 워킹 디렉토리를 뜻함) COPY package.json . # 명령어 실행 (의존성 설치) RUN npm install # 현재 디렉토리의 모든 파일을 도커 컨테이너의 디렉토리에 ...

Docker 도커 컨테이너 안에 TimeZone을 Dockerfile으로 셋팅하기

이미지
개발을 진행하다 보면 컨테이너 안의 TimeZone을 UTC 기준이 아닌 다른 시간대로 설정해야 하는 상황이 생깁니다. 컨테이너를 생성하면서 TimeZone을 변경하는 방법은 Dockerfile를 수정하면 됩니다. 저는 NodeJS을 사용하기 때문에 Base 이미지를 node로 하도록 하겠습니다. 일단 TimeZone을 셋팅하지 않은 상태에서 시간을 측정해보겠습니다. 먼저 간단한 서버를 작성합니다. (index.js) const http = require ( "http" ) const host = "localhost" const port = 8000 const requestListener = function ( req , res ) { res . writeHead ( 200 ) res . end ( "My first server!" ) } const server = http . createServer ( requestListener ) server . listen ( port , host , () => { console . log ( `Server is running on http:// ${ host } : ${ port } ` ) }) 먼저 일반 node 이미지로 작성한 Dockerfile입니다. # Base 이미지를 사용합니다. # FROM node:20.10.0 FROM node:20.10.0 # 코드들을 도커 이미지로 이동시킵니다. COPY . . # 서버의 노출된 포트를 표시한다 EXPOSE 8000 # nodejs 서버를 실행한다. CMD [ "node" , "index.js" ] 해당 Dockerfile을 기준으로 이미지를 생성합니다. 해당 이미지를 기준으로 컨테이너를 생성하고 컨테이너 내의 시간을 확인합니다. 위 터미널에서 나온것과 같이 UTC시간이 Default인것을 알...

Docker-Compose Apache로 HTML 웹사이트 구성하기

이미지
 아파치를 이용하여 웹사이트를 구성하도록 Dockerfile과 Docker-Compose file을 작성한다. 프로젝트 파일 구성 index.html은 아래와 같이 구성한다. <! DOCTYPE html > < html lang = "en" > < head > < meta charset = "UTF-8" /> < meta name = "viewport" content = "width=device-width, initial-scale=1.0" /> < title > 원티드 시연 </ title > </ head > < body > < h1 > Wanted Backend Challenge - Docker </ h1 > < p >< br /></ p > < h3 > Docker 자료 정리 </ h3 > < p >< br /></ p > < div > < h4 > 도커 설치법(docker, docker-compose) </ h4 > < p > 1. Docker 설치 : < a href = "https://engineeringshw.blogspot.com/2022/03/docker-install-by-terminal-ubuntu-2004.html" > [Ubuntu(Linux)] </ a > < a ...

docker-compose php, mysql을 Dockerfile, docker-compose.yaml을 이용하여 서버 구성하기

이미지
파일구성 src폴더 안에는 php파일들이 들어갑니다.  mysql.php 코드 <!-- ./src/mysql.php --> <?php $env = parse_ini_file ( '../.env' ); // env파일 경로를 확인해서 key, value로 저장 $host = $env [ "MYSQL_HOST" ]; // MySQL 연결 주소 $username = $env [ "MYSQL_USERNAME" ]; // MySQL 사용자 이름 $password = $env [ "MYSQL_PASSWORD" ]; // MySQL 사용자 비밀번호 $dbname = $env [ "MYSQL_DATABASE" ]; // 데이터베이스 이름 $dbport = $env [ "MYSQL_PORT" ]; // 데이터베이스 포트 // MySQL에 연결 $conn = new mysqli ( $host , $username , $password , $dbname , $dbport ); // 연결 확인 if ( $conn -> connect_error ) { die ( "Connection failed: " . $conn -> connect_error ); } echo "Connected successfully" ; // 연결 종료 $conn -> close (); ? > Dockerfile 파일 # ./Dockerfile # PHP Docker 공식 문서 : https://hub.docker.com/_/php # PHP 이미지를 사용합니다. 버전은 필요에 따라 조정할 수 있습니다. FROM php : 8.2-cli # PHP의 mysqli을 사용하기 위한 extension을 설치 RUN docker-php-ext-install mysqli && doc...

Docker-Compose yaml파일을 이용하여 Redis를 Local로 구축하기

이미지
  사전에 Docker및 Docker-Compose가 설치되어 있어야 합니다. mysql official docker image link : https://hub.docker.com/_/redis docker-compose로 컨테이너를 만들기전 .yaml파일을 작성합니다. # 참고 링크 : https://hub.docker.com/_/redis services : redis : # 컨테이너의 베이스가 될 이미지를 받는다(현재 docker-compose.yaml은 mysql 8.2.0버전을 사용한다.) image : redis:7.2.3 volumes : # redis의 데이터의 초기화를 방지하기 위해 볼륨으로 저장한다. - redis_data:/data #- ${REDIS_DEFAULT_CONFIG_FILE}:/usr/local/etc/redis/redis.conf # redis의 config파일. {REDIS_DEFAULT_CONFIG_FILE}에서 직접 수정 가능 # command: redis-server /usr/local/etc/redis/redis.conf # redis.conf파일을 사용시 명령을 내린다. env_file : # yaml의 상대경로로 환경변수 파일을 찾는다. - .redis.env # 아래처럼 직접 비밀번호를 입력할수 있지만 추천하지 않음 #environment: # - REDIS_PASSWORD=safePassword! command : - /bin/sh - -c # - Double dollars, so that the variable is not expanded by Docker Compose # - Surround by quotes, so that the she...

Docker-Compose yaml파일을 이용하여 MySQL를 Local로 구축하기

이미지
사전에 Docker및 Docker-Compose가 설치되어 있어야 합니다. mysql official docker image link : https://hub.docker.com/_/mysql docker-compose로 컨테이너를 만들기전 .yaml파일을 작성합니다. # ./docker-compose.yaml # services에서는 여러개의 컨테이너를 생성할수 있습니다. # 참고 링크 : https://hub.docker.com/_/mysql services : mysql : # 컨테이너의 베이스가 될 이미지를 받는다(현재 docker-compose.yaml은 mysql 8.2.0버전을 사용한다.) image : mysql:8.2.0 volumes : # mysql의 데이터의 초기화를 방지하기 위해 볼륨으로 저장한다. - mysql_data:/var/lib/mysql env_file : # yaml의 상대경로로 환경변수 파일을 찾는다. - ./.mysql.env ports : # 외부에 포트를 노출시킨다. mysql의 default포트는 3306이고 4500포트로 외부에 노출시킨다. - "4500:3306" # 네이밍 볼륨이 있을시 반드시 루트에 한번더 volumes 안에 해당 네이밍 볼륨 이름을 넣는다. volumes : # mysql은 mysql_data라는 네이밍 볼륨을 사용하기 때문에 아래에 추가해준다. mysql_data : docker-compose.yaml과 같은 경로에 .mysql.env파일 안에는 아래와 같이 유저 이름과 비밀번호를 작성하고 저장합니다. # MySQL 루트 비밀번호 MYSQL_ROOT_PASSWORD=password # MySQL 사용자 계정(선택) MYSQL_USER=alex # MySQL 사용자 비밀번호(선택) MYSQL_PASSWORD=password # MySQL 타임존 셋팅(선택). 설정하지 않을시 UTC시간으로 설정....

docker-compose 도커를 이용하여 개발하기 - 모듈 동기화

이미지
저번작업에 이어 이번에는 node_modules를 동기화 하겠습니다. 자세한 내용은 이전 글을 참고해 주시기 바랍니다. 이전글 : docker-compose 도커를 이용하여 개발하기 - 코드 동기화 1. module을 동기화하기 저번과 마찬가지로 NestJS을 이용하여 도커 개발환경을 구성하는데 이번에는 node_modules를 실시간으로 동기화 하는 작업을 하겠습니다.  먼저 .dockerignore 파일을 작성합니다. # ./.dockerignore node_modules package.json package-lock.json npm-debug.log dist 그리고 기존의 도커파일(Dockerfile)을 수정합니다. # ./Dockerfile # Base 이미지를 사용합니다. FROM node : 18.18.0 # Docker Container안의 디렉토리를 설정합니다. 설정을 안할시 Root리렉토리로 설정됩니다. WORKDIR /nestjs # package.json을 도커 이미지에 복사합니다. # COPY package.json /nestjs # COPY package-lock.json /nestjs # package데이터를 근거로 npm을 설치한다. # RUN npm install # 해당 디렉토리에 있는 모든 파일, 폴더를 도커 이미지로 복사합니다. # .dockerignore에 있는것은 제외 COPY . /nestjs # 해당 도커 이미지에서 build를 해서 dist폴더를 생성합니다. # RUN npm run build # 해당 이미지의 포트를 EXPOSE합니다. # 표시만 할뿐 실제 도커 컨테이너의 포트가 노출되지 않는다. EXPOSE 3000 # 도커 이미지를 이용하여 컨테이너를 생성시 nodejs 자동 실행(development mode) CMD [ "npm" , "run" , "start:dev" ] 다음은 docker-compose.yaml파일을 수정합니다. ...