Centos이미지 기반 httpd 서비스 구성하기
# Dockerfile
FROM centos:7
RUN yum -y update && yum -y install httpd
WORKDIR /vaw/www/html
COPY index.html .
ENTRYPOINT ["/usr/sbin/httpd","-D","FOREGROUND"]
touch index.html
echo hello > index.html
docker build -t {image-name}
docker run -dp {host-port}:{container-port} —name {container-name} {image-name}
Docker file CMD, Entrypoint
docker run 시 <옵션><이미지><명령> 옵션으로 구성됨 이 때 <명령> 부분에 값이 들어가게 됐을 때 cmd 명령어는 무시 되고, entrypoint 명령어는 실행 되는 차이점이 있다.
Word Press on Docker
word press와 mariadb 컨테이너를 사용하여 WP 구성하기
- mariadb 컨테이너 생성하기
- 환경 변수
-e
옵션을 사용하여 DB서비스 설정
docker run -d --name db -e MYSQL_ROOT_PASSWORD=1234 -e MYSQL_DATABASE=wordpress -e MYSQL_USER=wpuser -e MYSQL_PASSWORD=1234 mariadb
- Word Press 컨테이너 생성 및 DB연결하기
--link {}:{}
옵션을 사용하여 container hostname 지정
docker run --name wp -dp 3232:80 --link db:db -e WORDPRESS_DB_HOST=db -e WORDPRESS_DB_USER=wpuser -e WORDPRESS_DB_PASSWORD=1234 -e WORDPRESS_DB_NAME=wordpress wordpress
- Docker File 실습
- DB Dockerfile
FROM mariadb ENV MYSQL_ROOT_PASSWORD=1234 \ MYSQL_DATABASE=wordpress \ MYSQL_USER=wpuser \ MYSQL_PASSWORD=1234
- WP Docerfile
FROM wordpress ENV WORDPRESS_DB_HOST db ENV WORDPRESS_DB_USER=wpuser ENV WORDPRESS_DB_PASSWORD=1234 ENV WORDPRESS_DB_NAME=wordpress
- 💡 wordpress 및 mariadb 이미지를 베이스로 하여환경변수를 포함한 Dockerfile을 작성 후 이미지를 생성하여 컨테이너를 동작시켜보세요!
- 단, maria db의 DB가 호스트의 /maria에 영구 저장 되어야 한다.
Tomcat on Docker
- Tomcat image
- test.jsp
<%@ page contentType="text/html; charset=UTF-8"%> <html> <head><title>hello world</title></head> <body> tomcat test now_time : <%= new java.util.Date()%> </body> </html>
- dbtest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.sql.*"%> <h1>DB</h2> <% Connection conn=null; try{ String Url="jdbc:mysql://db/wordpress"; String Id="wpuser"; String Pass="1234"; Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection(Url,Id,Pass); out.println("was-db Connection Success!"); }catch(Exception e) { e.printStackTrace(); } %>
#Dockerfile /usr/local/apache2/conf/httpd.conf FROM centos:7 RUN mkdir -p /tomcat WORKDIR /tomcat RUN yum install -y java-1.8.0-openjdk &&\ yum install -y wget &&\ yum install -y unzip RUN wget http://dlcdn.apache.org/tomcat/tomcat-9/v9.0.70/bin/apache-tomcat-9.0.70.zip RUN unzip apache-tomcat-9.0.70.zip RUN mv apache-tomcat-9.0.70 tomcat RUN chmod -R 777 /tomcat WORKDIR /tomcat/tomcat COPY mysql-connector-java-8.0.30.jar lib/ COPY test.jsp webapps/ROOT/ COPY dbtest.jsp webapps/ROOT/ ENTRYPOINT ["sh", "/tomcat/tomcat/bin/catalina.sh", "run"]
DB image
```bash
FROM mariadb
ENV MYSQL_ROOT_PASSWORD=1234 \
MYSQL_DATABASE=wordpress \
MYSQL_USER=wpuser \
MYSQL_PASSWORD=1234
```
Image builddocker build -t tomcat:1.0 .
docker build -t db:1.0 .
Docker rundocker run -d --name db db:1.0
docker run -dp 8000:8080 --link db:db --name tomcat tomcat:1.0
-dp : {host-port}:{container-port}
link {container-name}:{name}
: tomcat container에서 {name}
으로 통신 가능
'클라우드' 카테고리의 다른 글
[devops] Argo project로 CI/CD Pipeline 구현하기 (0) | 2023.07.26 |
---|---|
[Docker] Docker-Compose (0) | 2023.07.14 |
[Docker] Docker로 컨테이너 배포하기 (0) | 2023.07.14 |
[Terraform] 테라폼 - AWS - 설치 (0) | 2023.07.03 |
[EKS] Amazon EKS 설치하기 (0) | 2023.06.22 |