묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨개발자를 위한 쉬운 도커
이미지의 세부 정보 조회 오류
분명 이미지가있는데 왜 없다고 나올까요?
-
해결됨개발자를 위한 쉬운 도커
wsl 설치 오류
안녕하세요 4단계는 해결했는데5단계에서 지정한 경로를 찾을 수 없다는 오류가 발생하네요.. powershell에서 wsl만 앞에 붙으면 다 지정된 경로를 찾을 수 없다고 뜨네요 ㅠㅠ
-
해결됨개발자를 위한 쉬운 도커
도커 설치 오류
안녕하세요 도커 설치 도중 오류가 발생해서 질문 드립니다!docker desktop 설치 후 실행 시 위와 같은 에러가 발생해서 wsl 설치를 따라 진행하던 도중 4단계 커널 업데이트 패키지 설치에서 이런 에러가 발생해서 진행이 안되네요 ㅠ
-
미해결개발자를 위한 쉬운 도커
안녕하세요. 레이어 관리 관련해서 질문드리고 싶습니다.
TOPIC1. 레이어 관리에서 RUN 지시어 사용 시 && 연산자를 사용하여 레이어의 개수를 5개에서 1개로 줄이고 있는데요. 이미지의 사이즈를 줄이고 빌드 속도를 높이기 위함. 이라고 말씀을 해주셨습니다.먼저, 질문은 2가지입니다.레이어의 사이즈가 동일한데, 어떤 관점으로 이미지의 사이즈가 축소되는 것인가?레이어의 재활용성에 대해서 어떻게 생각하시는지? 레이어의 사이즈를 봤을 때 5개, 1개의 사이즈가 116MB로 동일하니 이미지의 사이즈는 동일한 것으로 보입니다. 1개의 레이어는 5개의 레이어를 별도로 불러와서 빌드하지는 않으니 속도가 빨라질 수는 있을 것 같다는 생각이 들어서 빌드의 속도는 빨라지나 이미지의 사이즈가 줄어든다. 라는 부분이 이해가 되지 않았습니다.흔한 케이스는 아닐 것 같으나, 5개의 레이어를 분리를 하게 되면 레이어를 재사용 할 수 있는 장점이 있을 것 같다는 생각이 들었습니다.마치, 깃을 다룰 때 한 개의 커밋에 하나의 기능만 포함하도록 한 느낌처럼요. 적절하게 레이어를 분리하는 시점을 찾는 것이 중요한 것으로 얘기를 해주신걸까? 하는 생각을 해봤습니다.
-
미해결개발자를 위한 쉬운 도커
Docker 백앤드 컨테이너 실행시 오류
안녕하세요, 강의 6-3을 듣다가 막히는 부분이 있어 질문드립니다. postgres container를 잘 실행하고 백엔드 컨테이너를 docker run -d -p 80:80 --network leafy-network --name leafy-front devwikirepo/leafy-frontend:1.0.0 명령어를 통해 실행하였습니다. 그런데 이후에 log를 보면 아래와 같은 문구들이 나오면서, 에러가 발생했다고 나옵니다. (글씨가 너무 작아서, 에러 부분은 아래와 같습니다)2025-02-28 12:36:54.708 INFO 1 --- [ main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 526 ms2025-02-28 12:36:54.731 ERROR 1 --- [ main] o.s.b.web.embedded.tomcat.TomcatStarter : Error starting Tomcat context. Exception: org.springframework.beans.factory.UnsatisfiedDependencyException. Message: Error creating bean with name 'webMvcMetricsFilter' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/web/servlet/WebMvcMetricsAutoConfiguration.class]: Unsatisfied dependency expressed through method 'webMvcMetricsFilter' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'simpleMeterRegistry' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/export/simple/SimpleMetricsExportAutoConfiguration.class]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'processorMetrics' defined in class path resource [org/springframework/boot/actuate/autoconfigure/metrics/SystemMetricsAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [io.micrometer.core.instrument.binder.system.ProcessorMetrics]: Factory method 'processorMetrics' threw exception; nested exception is java.lang.NullPointerException2025-02-28 12:36:54.740 INFO 1 --- [ main] o.apache.catalina.core.StandardService : Stopping service [Tomcat]2025-02-28 12:36:54.743 WARN 1 --- [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.context.ApplicationContextException: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat2025-02-28 12:36:54.749 INFO 1 --- [ main] ConditionEvaluationReportLoggingListener : Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2025-02-28 12:36:54.757 ERROR 1 --- [ main] o.s.boot.SpringApplication : Application run failed docker ps -a를 해보면 아래와 같이 로그가 나옵니다. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESdf36a2b0896f devwikirepo/leafy-backend:1.0.0 "java -jar leafy.jar" 52 seconds ago Exited (1) 50 seconds ago leafy9e9ee5a82c36 devwikirepo/leafy-postgres:1.0.0 "docker-entrypoint.s…" 27 minutes ago Up 27 minutes 5432/tcp leafy-postgres\ 혹시 어떤 오류이고, 어떻게 해결하면 좋을까요? 감사합니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
컨테이너 포트 설정 질문
안녕하세요 강의 잘 듣고 있습니다 감사합니다docker run -p 3306:3306 -e MYSQL_ROOT_PASSWORD=test123 -d mysql이렇게 컨테이너를 실행한 후, datagrip을 통해서 url: jdbc:mysql://localhost:3306 로 정상 접속되는 것 확인했습니다. 하지만,docker run -p 3306:8888 -e MYSQL_ROOT_PASSWORD=test123 -d mysql이렇게 실행하고 동일한 database url로 접속 시도하면 되질 않습니다. 3306으로 접속 시도하면 컨테이너 내부의 8888 mysql port와 매핑되어 있기 때문에 접속이 되어야하지 않나요?호스트, 컨테이너 포트를 동일하게 설정해야만 컨테이너 내부 mysql db에 접속이 가능한 이유가 잘 이해되지 않습니다.답변 부탁드립니다!
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
docker compose ci&cd 질문
도커 컴포즈를 배우면서 여러개의 컨테이너를 띄우고 spring에서 특정 db를 가리켜서 사용할 수 있는걸 이해했는데 이걸 ci&cd 배포를 추가한다고 치면 문제가 발생합니다. 제가 이해하기로는 docker compose는 build 부분에 도커파일을 넣게 되어 있는데 근데 이러면 ci&cd 할 때 스크립트 순서가 java 설치 -> checkout -> 빌드 -> jar파일, 도커 파일, 도커 컴포즈 파일 scp를 활용해 전달 -> ssh로 접근해서 도커 컴포즈 실행이렇게 사용하면 이미지를 넣어두고 다른데서도 사용할 수 있어야 하는 그런 장점이 없어진다고 생각하는데 이걸 어떻게 배포를 해야 하는건가요? 제가 생각한 도커, 컴포즈 파일, jar 파일을 전달하고 해당 ec2에서 docker compose를 해야하는건가요??
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
docker compose 2개(mysql, spring boot)를 띄울시 동작을 안합니다.
도커 파일은 아래입니다.FROM openjdk:17-jdk COPY build/libs/*.jar /app.jar ENTRYPOINT ["java","-jar","/app.jar"]도커 컴포즈 파일 입니다.services: my-server: build: . ports: - 8080:8080 depends_on: my-db: condition: service_healthy my-db: image: mysql environment: MYSQL_ROOT_PASSWORD: 1234 MYSQL_DATABASE: mydb volumes: - /Users/shchoi/Downloads/docker/mysql:/var/lib/mysql ports: - 3306:3306 healthcheck: test: [ "CMD", "mysqladmin", "ping" ] interval: 5s retries: 10yml파일 입니다.spring: datasource: url: jdbc:mysql://my-db:3306/mydb username: root password: 1234 driver-class-name: com.mysql.cj.jdbc.Driver 이렇게 하고 실행시 db는 up이 되는데 spring은 다운 됩니다. 로그는 좀 길긴한데 아래와 같습니다.왜 안뜨는걸까요....;my-server-1 | 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 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided)my-server-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1812) ~[spring-beans-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) ~[spring-beans-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:523) ~[spring-beans-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:339) ~[spring-beans-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:346) ~[spring-beans-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) ~[spring-beans-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207) ~[spring-beans-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:970) ~[spring-context-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:627) ~[spring-context-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.4.3.jar!/:3.4.3]my-server-1 | at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) ~[spring-boot-3.4.3.jar!/:3.4.3]my-server-1 | at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.4.3.jar!/:3.4.3]my-server-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.4.3.jar!/:3.4.3]my-server-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) ~[spring-boot-3.4.3.jar!/:3.4.3]my-server-1 | at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) ~[spring-boot-3.4.3.jar!/:3.4.3]my-server-1 | at com.csh.springdemo.SpringDemoApplication.main(SpringDemoApplication.java:10) ~[!/:0.0.1-SNAPSHOT]my-server-1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]my-server-1 | at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na]my-server-1 | at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]my-server-1 | at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na]my-server-1 | at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:102) ~[app.jar:0.0.1-SNAPSHOT]my-server-1 | at org.springframework.boot.loader.launch.Launcher.launch(Launcher.java:64) ~[app.jar:0.0.1-SNAPSHOT]my-server-1 | at org.springframework.boot.loader.launch.JarLauncher.main(JarLauncher.java:40) ~[app.jar:0.0.1-SNAPSHOT]my-server-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 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided)my-server-1 | at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:276) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:238) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:215) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.boot.model.relational.Database.<init>(Database.java:45) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.getDatabase(InFlightMetadataCollectorImpl.java:226) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.boot.internal.InFlightMetadataCollectorImpl.<init>(InFlightMetadataCollectorImpl.java:194) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:171) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.metadata(EntityManagerFactoryBuilderImpl.java:1442) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.jpa.boot.internal.EntityManagerFactoryBuilderImpl.build(EntityManagerFactoryBuilderImpl.java:1513) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.springframework.orm.jpa.vendor.SpringHibernateJpaPersistenceProvider.createContainerEntityManagerFactory(SpringHibernateJpaPersistenceProvider.java:66) ~[spring-orm-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:390) ~[spring-orm-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.buildNativeEntityManagerFactory(AbstractEntityManagerFactoryBean.java:419) ~[spring-orm-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:400) ~[spring-orm-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.afterPropertiesSet(LocalContainerEntityManagerFactoryBean.java:366) ~[spring-orm-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1859) ~[spring-beans-6.2.3.jar!/:6.2.3]my-server-1 | at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1808) ~[spring-beans-6.2.3.jar!/:6.2.3]my-server-1 | ... 22 common frames omittedmy-server-1 | Caused by: org.hibernate.HibernateException: Unable to determine Dialect without JDBC metadata (please set 'jakarta.persistence.jdbc.url' for common cases or 'hibernate.dialect' when a custom Dialect implementation must be provided)my-server-1 | at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:191) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.engine.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:87) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentWithDefaults(JdbcEnvironmentInitiator.java:181) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.getJdbcEnvironmentUsingJdbcMetadata(JdbcEnvironmentInitiator.java:392) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:129) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:81) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:130) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:263) ~[hibernate-core-6.6.8.Final.jar!/:6.6.8.Final]my-server-1 | ... 37 common frames omittedmy-server-1 |
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
컨테이너 내부에서 사용하는 포트를 어떻게 지정하나요?
공부를 하다가 궁금해진건데 예를 들어서 MYSQL을 사용하면 3306 포트를 호스트에 노출 시켜서 run하는 시점에 docker run -p 3306:3306 이렇게 매핑을 한다 쳤을 때 컨테이너 내부의 3306은 어떤 기준으로 열리게 된건지가 궁금합니다. 처음에는 프로그램마다 다를거라고 생각을 했습니다. MYSQL은 3306 포트를 열게하는 설정이 있다. 그리고 자바로 치면 application.yml을 보고 server.port을 참고하여 포트를 열어버린다? 근데 이렇게 생각하니까 외부 프로그램이 포트를 연다라는 발상을 하게 되는데 좀 이상한 것 같습니다. 또한 어떤 기준으로 포트가 열리는지 궁금합니다.
-
해결됨개발자를 위한 쉬운 도커
COPY 경로에 관한 질문드립니다.
WORKDIR /app 으로 바꾸고 나서COPY ./ / 을 COPY . . 으로 변경하셨는데요WORKDIR 을 지정하게되면 컨테이너 작업디렉토리를 지정하게되지만 빌드컨텍스트 위치는 그대로이니 COPY ./ . 라고 생각했는데 제가 뭘 잘못생각하고 있는 걸까요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
localhost 관련
안녕하세요! 그러면 이전 영상대로 실습했을 때 docker compose ps 했을 때, 정상적으로 my-db와 my-server가 작동중인 경우는 잘못된건가요?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
failed to connect to mysql
gradlew build 이후compose up 했을 때mysql만 올라오고 spring boot서버는 안올라오는 상황입니다.gui db로 접속하려고 하니 밑의 그림과 같이 뜹니다.제가 직접 컨테이너에 접근하여 접속한 결과다음과 같이 똑같은 id,pw로 로그인이 되는데왜 gui환경에서만 로그인이 안되는 걸까요?root계정으로 접속 후 저 계정에 대한 비밀번호를 변경해보았습니다.root계정 접속 후 저 계정에 대한 모든 권한을 부여하였습니다.차이점application.yml파일에서 username: root로 실행하면스프링부트도 잘 올라오는데 username:xoxoxmin1268이런식으로 제 아이디를 넣으면 다음과 같은 로그 뜹니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
[실습] 백엔드 프로젝트(Spring Boot) 프로젝트를 Docker로 실행시키기 import문제
현재 start.spring.io에서 의존성 두개 추가해서 generate 이후demo.zip파일을 받았는데 압축을 풀고 setting.gradle을 눌렸더니 밑의 그림과 같이 뜹니다.이게 압축을 푸는게 맞는건가요?혹시 몰라서 이클립스를 다운받고 이클립스에서 zip파일을 import시키고 appcontroller생성 후 @Restconrollerimport하는 부분에서 어노테이션을 못찾습니다.
-
미해결개발자를 위한 쉬운 도커
gradle 빌드 환경 에 따른 도커파일 설정 값 문의
gredle 을 빌드 도구 설치 해보려 하는데 메이븐과 그래들 도커파일이 설정값이 많이 달라질까요? 빌드 환경이 무엇 이냐에 따라 도커파일 설정값들을 어떻게 해야 하는지 참조 할 수 있는 있는 사이트가 있을지 궁금합니다 같은 코드로 gradle일때 변경되는 설정 값에 대해 시간이 되신다면 pdf, 깃 파일, 강의 아무거나 넣어 주시면 너무 감사드리겠습니다 gradle 하나 겨우 배워놨는데 아래에 내용에 모두 메이븐 이라고 생각하니 슬프네유 ㅠ
-
해결됨개발자를 위한 쉬운 도커
도커 컨테이너 내부에서 개발하는 것의 장단점에 대해
도커 컨테이너 내부에서 개발하는 것에 의문점이 있습니다.개발 환경 세팅이 오래 걸려도 사실 그렇게까지 오래 걸리진 않는다고 생각하고, 개발 환경 버전이 바뀔 때도 팀 내에서 의견을 맞춰서 싱크를 맞추면 문제가 없지 않을까 싶은데요. 물론 버전이 다른 프로젝트를 여러 개 관리해야하는 상황이라면 번거로움을 없애기 위해 필요할 수도 있겠다는 생각이 들긴 합니다.그런데 도커 컨테이너로 한 번 감싸서 개발을 진행하게 되면, 성능에 이슈가 생기지는 않나요? 바로 개발하는 것과 달리 리소스에 제한을 두게 되고 도커를 한 번 거쳐서 개발을 하게 되는 것 같아서요.
-
해결됨비전공자도 이해할 수 있는 Docker 입문/실전
도커 컨테이너로 서버 운용시 질문
해당 강의를 듣고 우분투 서버에서 jar 를 백그라운드로 운영하던것을도커 컨테이너로 전환해보고 있습니다. 근데 우분투 서버에 파일을 전송해주는 ftp 서버와 같은 경우는 실무에서 도커 컨테이너로 운영하지않고 우분투 서버에 바로 설치하시죠? 정리하면jar 와 같은 was 서버는 도커 컨테이너로 운영하고우분투 서버에 파일을 옮기기 위한 ftp 서버같은 경우 도커 컨테이너가 아닌 우분투 서버에 바로 설치하시는지 궁금합니다.
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
.dockerignore
[실습] 백엔드 프로젝트(Nest.js)를 Docker로 실행시키기 강의에서.dockerignore에 node_modules를 지정해주었는데 컨테이너 내부에 node_modules가 들어가져있습니다.영상에서 강사님 컨테이너에도 node_modules가 있는데 맞는건가요?- 추가.dockerignore에 README.md 파일을 지정하고 빌드하니 README.md는 제외된 것 같습니다. node_modules는 파일이 아니라 디렉토리라 /를 붙여줘야하는 걸까요?아! 생각해보니 node_modules는 COPY한게 아니라 npm install의 결과물이군요!
-
해결됨개발자를 위한 쉬운 도커
레이어 생성 관련 질문입니다
레이어 관리 에서 RUN 명령어를 예시로 보여주셨는데요,CMD 제외하고선 모두 동일할까요?! 슬라이드에는 "RUN 지시어는 &&을 활용해 최대한 하나로 처리합니다"라고 쓰여있어서요!ex) COPY 도 가능하면 &&로 하는게 좋은게 맞는지?
-
미해결비전공자도 이해할 수 있는 Docker 입문/실전
윈도우 볼륨 생성 안되는 문제
윈도우 환경으로 실습하고 계시는 분 중 저처럼 삽질 안하셨으면 하는 마음에 글을 남깁니다... ㅠ저는 강사님과 동일하게 명령어를 수행했고, 관리자 환경임에도 불구하고 디렉토리만 만들어지며 내부의 내용물을 텅빈 상태였습니다. 이때 아래와 같이 "" 붙여주시면 잘 적용이 됩니다.docker run -e MYSQL_ROOT_PASSWORD=password123 -p 3306:3306 -v "호스트주소:/var/lib/mysql" -d mysql
-
해결됨개발자를 위한 쉬운 도커
RUN cp
개인적으로 실습을 해보고 있는 과정에서 아무리 해도 해결책을 모르는 것을 물어보고 싶어서 남겨봅니다. multistagebuild 하기전에 singlestagebuild를 하려고 하는 상황입니다. # 빌드 환경 설정 FROM gradle:7.6-jdk17 # 작업 디렉토리 설정 WORKDIR /app # Gradle 빌드 파일과 소스 코드 복사 COPY build.gradle settings.gradle . COPY src ./src # Gradle을 사용하여 애플리케이션 빌드 RUN gradle clean build --no-daemon # 빌드된 JAR 파일을 실행 환경으로 복사 RUN cp build/libs/*.jar app.jar # 빌드된 JAR 파일 실행 EXPOSE 8080 CMD ["java", "-jar", "app.jar"]이렇게 입력을 하면 RUN cp 과정에서"/bin/sh -c cp build/libs/*.jar app.jar" did not complete successfully: exit code: 1"결과가 나옵니다.(RUN cp /app/build/libs/*.jar /app/app.jar 로 해도 결과가 똑같이 나옵니다...)하지만 RUN cp -> COPY로 수정하면 성공합니다.이유에 대해서 물어봐도 될까요? 아무리 구글링을 해도 답을 찾기가 힘듭니다..또한 RUN cp로 빌드에 성공하려면 어떻게 작성해야 할까요?