1. 무엇을 하고 싶으신가요? 강좌 bind mount에서 로컬과 도커 컨테이너간의 파일 또는 경로를 공유 (/usr/local/apache2/htdocs/) 를 하고자 하는데 계속 연결이 되지 않습니다. 2. 언제, 어떤 오류가 발생하시나요? [doyoung@dockers-m:/test]$ sudo docker run --rm --name httpd -p 8080:80 \ > -v "$(pwd)"/index.html:/usr/local/apache2/htdocs/index.html:rw \ > -d httpd:2.4 a6223fce61285c77f71be99f448e28b4cdba768662030e240db12c6c3d827b55 docker: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/test/index.html" to rootfs at "/usr/local/apache2/htdocs/index.html": mount /test/index.html:/usr/local/apache2/htdocs/index.html (via /proc/self/fd/6), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type. [doyoung@dockers-m:/test]$ 3. 어떤 시도를 해보셨나요? 로컬 index.html의 권한 변경 chmod 777 index.html 파일 경로 변경 /home/doyoung/~~~/~ --> /test/ 4. 작성한 코드를 공유해주세요. sudo docker run --rm --name httpd -p 8080:80 \ -v "$(pwd)"/index.html:/usr/local/apache2/htdocs/index.html:rw \ -d httpd:2.4
m1 pro 사용 중이고 docker desktop 설치되어 있습니다. 찾아보니 docker desktop 설치 시 docker compose 도 같이 설치된다고 하던데.. 커맨드 자체가 없는거보니 뭔가 바뀐것 같네요. 아래처럼 수동으로 설치도 잘 안돼서 진행을 못하고 있습니다..
질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예 | 아니요] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 | 아니요] 3. 질문 잘하기 법을 읽어보셨나요? [예 | 아니요] ( https://www.inflearn.com/blogs/1719 ) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://www.inflearn.com/questions/992407/comment/281901 ) [질문 하기] ./_Lecture_k8s_starter.kit/ch2/2.4/ 경로에 metallb.yaml 파일이 없습니다
안녕하세요. 버츄얼 시스템에 자체 리눅스를 구성 후 ip를 다르게 설정하여 사용중입니다. (ip range : 10.1.3.0/24) 강의 중 extra_k8s_pkgs_sh 를 이용하여 테스트망 구성중 "nfs-client-provisioner" pod의 구성에 어려움이 있어 질문 드립니다. EXTRA_PKGS_ADDR의 주소를 fork후 주소를 변경 후 스크립트 실행했습니다. 파일 에서 "k8s/extra-pkgs/v1.30/ingress-ctrl-loadbalancer-v1.10.1.yaml" 파일의 loadBalancerIP (10.1.3.x)변경 "k8s/extra-pkgs/v1.30/metallb-iprange.yaml" 파일의 spec.addresses (10.1.3.x-10.1.3.y) "k8s/extra-pkgs/v1.30/nfs-provisioner-v4.0.2.yaml" 파일의 NFS_SERVER, nfs-client-root의 ip 변경 (10.1.3.z - control-plane node ip) 로 변경했습니다. 실행 후 nfs-client-provisioner pod의 status 가 ContainerCreatin에서 로그는 stream logs failed container "nfs-client-provisioner" in pod "nfs-client-provisioner-5b45d4bc47-jzwd7" is waiting to start: ContainerCreating for default/nfs-client-provisioner-5b45d4bc47-jzwd7 (nfs-client-provisioner) 가 확인 되고 describe 확인 시 가 보여집니다. 제가 강의를 전체 수강하지 못하고 필요한 부분을 따로 듣다보니 혹시 놓친 부분이 있다면 코멘트 부탁 드립니다.
만약 스프링 부트 서버용 EC2 한 개만 운용한다면 굳이 로드밸런서를 설정하지 않아도 괜찮을까요? 그리고 만약 스프링부트 서버용 EC2를 2, 3개 더 만든다면 프리티어단계에선 탄력적 IP에 대한 요금만 부과되는 것인지, EC2 인스턴스 갯수만큼 요금이 나오는 것인지 궁금합니다.
ecs에서 secret manager 연결할 때 RDS에서 secret manager를 사용해서 비밀번호를 자동으로 교체하도록 설정되어 있다면 비밀번호가 변경됐을 때 서버에서 변경된 비밀번호로 RDS에 다시 연결이 되는건가요? 런타임 환경에서 비밀번호가 동적으로 전달되지는 않을 것 같아서요 여쭤봅니다!
안녕하세요~! 비전공자도 이해할 수 있는 CI/CD 입문·실전 수업 너무 잘 보고 있습니다~! CodeDeploy까지 친절한 수업 잘 봤습니다. 감사합니다! 혹시, 복수개의 인스턴스(EC2)를 배포하고 관리하는 방법도 알 수 있을까요~? 생각 보다 운용중 AWS EC2에 장애가 발생할 수 있어 복수의 EC2를 준비해야 한다는 주변의 이야기를 들었습니다 ㅠㅠ 감사합니다!
안녕하세요. 강의대로 실행해서 최초 한번은 tabby를 통해서 접속이 가능합니다. 그런데 vmware, tabby를 종료하고 다시 "vagrant up"으로 재기동 하면 tabby를 통해서 접속 안됩니다. 이때 vmware에 로드된 machines을 삭제하고 다시 "vagrant up"을 하게되면 tabby를 통해서 접속이 가능합니다. 이런 경우 어떻게 해야 할까요? 답변 부탁드립니다.
https://www.inflearn.com/community/questions/1364596/access-denied-for-user-root-localhost-using-password-yes 위 글에서 재성님이 제시해주신 해결방법을 적용해보았습니다. 하지만 여전히 root 계정에 접속이 안됩니다. docker compose down -v 명령어를 통해 볼륨을 제거해도 여전히 해결이 안됩니다. 스프링부트 역시 데이터베이스와 연결되지 않았다는 오류가 로그에 남습니다.
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
탄력적 IP 설정 이후, 리눅스용 도커 설치 영상에 따라 우분투 서버에 docker를 설치했습니다. 그런데 과금이 되었더군요. 프리티어라 과금이 안될줄 알았는데, 정책이 바뀌어 탄력적 IP 설정에 비용이 청구됩니다. https://dev.classmethod.jp/articles/rate-policy-for-aws-public-ipv4-addresses-will-change-kr/ 탄력적 IP 사용을 안하면 과금이 된다는 말씀도 하셨던거 같은데 그냥 탄력적 IP를 해제하면 될까요? 서버 사용은 동적으로 바뀌는 IP로 접속하면 되는건지...
영상처럼 시작 템플릿 바꾸고 오토스케일링 그룹 설정 새로운버전으로 바꾸고 로드밸런서 dns 주소로 health체크를 해봤는데 502에러가 뜨고 안되서 여러가지 다 확인해봤는데 ec2 만들어지고 git clone 자체가 안되었더라고요 사용자 데이터 명령어 자체가 실행이 안됩니다 직접 들어가서 명령어를 치면 먹습니다 네트워크 문제도아니고 패키지 다운로드 안한것도 아닌데 사용자 데이터 명령어가 git clone 시작도 안되면 어떻게 해결해야될까요? git clone은 되었지만 괜한 root 계정 밑에서만 조회해서 못봤던거... 강사님 해결해주셔서 감사합니다!
Create certificate 과정에서 도메인 입력 후 자동 유효성 검사가 실패해 Automatic validation failed. Manual validation required. Expand the Validation details for this certificate to view the DNS records that you must manually add to the DNS of your domain to complete the validation process. 라는 문구가 나옵니다. 해결 방법을 좀 알수 있을까요?
DevOps를 위한 Docker 가상화 기술 (Private Harbor Registry)
harbor 디렉토리에서 ./prepare을 실행시키면 prepare base dir is set to /root/harbor WARNING: The requested image's platform (linux/amd64) does not match the detected host platform (linux/arm64/v8) and no specific platform was requested exec /usr/bin/python3: invalid argument 이러한 오류 메시지가 발생하여 이미지가 pull이 안되는 문제가 생깁니다.
도커 컴포즈 강의 중 스크린샷에 대한 질문이 2가지 있습니다. Q1. 해당 스크린샷의 코드는 어디가면 찾아볼 수 있나요? 깃헙의 Daintree-henry 유저의 리포지터리에서 찾아보려고 해도 찾아볼 수가 없어서 질문드립니다. Q2. Yaml 코드에서 Volumes는 왜 2번 나오는 건가요? 컨테이너 2개 각각의 image 바로 밑에 volumes라는 항목이 이미 존재하잖아요. (e.g. postgres_primary_data:/bitnami/postgresql ) 그런데 밑에서 보이는 또 다른 volumes 코드는 왜 존재하는 건가요? volumes: postgres_primary_data: postgres_standby_data:
시작 템플릿 - 유저 데이터에 write와 read 설정하고 오토스케일링 돌렸는데 에러가 납니다. 시작 템플릿에서 테스트로 인스턴스 생성해서 확인해보니 write는 문제 없는데 read에서 에러가 나옵니다. (여러번 설정해봄) ssh 접속해서 아래부분 실행 시 에러... 무슨 문제 일까요? java -jar build/libs/aws-msa-monolithic-prac-0.1.jar \ --spring.datasource.write.jdbc-url=jdbc:postgresql://goopang-rds-db.*****.ap-northeast-2.rds.amazonaws.com:5432:goopang_database \ --spring.datasource.write.username=postgres \ --spring.datasource.write.password=**** \ --spring.datasource.read.jdbc-url=jdbc:postgresql://goopang-rds-db-read-replica.****.ap-northeast-2.rds.amazonaws.com:5432:goopang_database \ --spring.datasource.read.username=postgres \ --spring.datasource.read.password=**** 2024-08-31T02:10:00.841Z ERROR 2333 --- [ main] j.LocalContainerEntityManagerFactoryBean : Failed to initialize JPA EntityManagerFactory: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect') 2024-08-31T02:10:00.907Z ERROR 2333 --- [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaConfiguration.class]: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect') at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1770) ~[spring-beans-6.0.9.jar!/:6.0.9] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:598) ~[spring-beans-6.0.9.jar!/:6.0.9] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:520) ~[spring-beans-6.0.9.jar!/:6.0.9] at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:326) ~[spring-beans-6.0.9.jar!/:6.0.9] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:234) ~[spring-beans-6.0.9.jar!/:6.0.9] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:324) ~[spring-beans-6.0.9.jar!/:6.0.9] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:200) ~[spring-beans-6.0.9.jar!/:6.0.9] at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1156) ~[spring-context-6.0.9.jar!/:6.0.9] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:931) ~[spring-context-6.0.9.jar!/:6.0.9] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:608) ~[spring-context-6.0.9.jar!/:6.0.9] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.1.0.jar!/:3.1.0] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:733) ~[spring-boot-3.1.0.jar!/:3.1.0] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:435) ~[spring-boot-3.1.0.jar!/:3.1.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:311) ~[spring-boot-3.1.0.jar!/:3.1.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1305) ~[spring-boot-3.1.0.jar!/:3.1.0] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1294) ~[spring-boot-3.1.0.jar!/:3.1.0] at com.prac.monolithic.awsmsamonolithicprac.AwsMsaMonolithicPracApplicationKt.main(AwsMsaMonolithicPracApplication.kt:13) ~[classes!/:0.1] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[na:na] at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:49) ~[aws-msa-monolithic-prac-0.1.jar:0.1] at org.springframework.boot.loader.Launcher.launch(Launcher.java:95) ~[aws-msa-monolithic-prac-0.1.jar:0.1] at org.springframework.boot.loader.Launcher.launch(Launcher.java:58) ~[aws-msa-monolithic-prac-0.1.jar:0.1] at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:65) ~[aws-msa-monolithic-prac-0.1.jar:0.1] Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] due to: Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect') at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:277) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:239) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:216) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.boot.model.relational.Database.<init>(Database.java:45) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:229) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:197) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:166) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1380) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1451) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:66) ~[spring-orm-6.0.9.jar!/:6.0.9] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:376) ~[spring-orm-6.0.9.jar!/:6.0.9] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:409) ~[spring-orm-6.0.9.jar!/:6.0.9] at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:396) ~[spring-orm-6.0.9.jar!/:6.0.9] at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:352) ~[spring-orm-6.0.9.jar!/:6.0.9] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1816) ~[spring-beans-6.0.9.jar!/:6.0.9] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1766) ~[spring-beans-6.0.9.jar!/:6.0.9] ... 24 common frames omitted Caused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'javax.persistence.jdbc.url', 'hibernate.connection.url', or 'hibernate.dialect') at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:188) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:87) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:274) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:34) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:119) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:264) ~[hibernate-core-6.2.2.Final.jar!/:6.2.2.Final] ... 39 common frames omitted 2024-08-31 02:10:01,061 - cc_scripts_user.py[WARNING]: Failed to run module scripts-user (scripts in /var/lib/cloud/instance/scripts) 2024-08-31 02:10:01,064 - util.py[WARNING]: Running module scripts-user (<module 'cloudinit.config.cc_scripts_user' from '/usr/lib/python3.9/site-packages/cloudinit/config/cc_scripts_user.py'>) failed Cloud-init v. 22.2.2 finished at Sat, 31 Aug 2024 02:10:01 +0000. Datasource DataSourceEc2. Up 122.75 seconds [root@ip-10-0-1-8 aws-operation-prac]#
DevOps를 위한 Docker 가상화 기술 (Private Harbor Registry)
docker stack services my-stack 이러한 명령어로 스택에 있는 서비스를 확인했을 때, replicas가 생기지 않는 문제가 발생합니다. docker service logs my-stack_nginx으로 로그를 확인했을 때, "my-stack_nginx.1.e52u87cn5fsb@65b1999ee81f | exec /docker-entrypoint.s h: invalid argument" 라는 오류 메시가 발생합니다.
안녕하세요 재성님! 좋은 강의 너무 잘 듣고 있습니다. 다름이 아니라 재성님 강의를 듣고 제 프로젝트에 spring boot mysql 을 함께 컴포즈 파일로 작성하고 있는데 localhost:8080 으로 접속하 org.springframework.web.servlet.resource.NoResourceFoundException: No static resource . 이라는 에러 문구가 나옵니다. 현재 프로젝트에서는.html 파일을 전혀 사용하지 않아서 이 에러의 원인을 잘 못찾고 있습니다. docker-compose 파일 첨부합니다. 감사합니다. services: my-server: build: . ports: - 8080:8080 # my-db의 컨테이너가 생성되고 healthy 하다고 판단 될 때, 해당 컨테이너를 생성한다. depends_on: my-db: condition: service_healthy my-db: image: mysql environment: MYSQL_ROOT_PASSWORD: 저희 비밀번호 MYSQL_DATABASE: mydb # MySQL 최초 실행 시 mydb라는 데이터베이스를 생성해준다. volumes: - ./mysql_data:/var/lib/mysql ports: - 3306:3306 healthcheck: test: [ "CMD", "mysqladmin", "ping" ] # MySQL이 healthy(정상 작동 하는지)한 지 판단할 수 있는 명령어 interval: 5s # 5초 간격으로 체크 retries: 10 # 10번까지 재시도