전체 제거
docker system prune --all --force
로그 제거
docker system prune --volumes
프로젝트/admin/settings.py의 INSTALLED_APPS에 있는 모듈명.파일명.파일명config은 app에 있는 이름과 같아야 한다
예시
- settings에서 한번에 주고 싶으면 settings에는 blog 입력, users와 tags에는 각각 blog.users, blog.tags를 입력
※ 주의 : models.py는 자동으로 테이블을 생성해주는 파일이지만 이 과정이 아닌 수동으로 생성하거나 설정값을 주지 않으면 테이블이 생성되지 않는다
WORKSPACE
# api/Dockerfile
FROM python:3.9
WORKDIR /usr/src/server
ADD requirements.txt .
RUN pip install --trusted-host pypi.python.org -r requirements.txt
CMD ["uvicorn", "main:app", "--reload", "--host", "0.0.0.0", "--port", "8000"]
# requirements.txt
mysqlclient
sqlalchemy
uvicorn
fastapi
pymysql
# mysql/conf.d/my.cnf
[mysqld]
character-set-server=utf8
skip-character-set-client-handshake
default-storage-engine=INNODB
explicit-defaults-for-timestamp=1
general-log=1
[mysqldump]
default-character-set=utf8
[mysql]
default-character-set=utf8
[client]
default-character-set=utf8
# mysql/initdb.d/schema.sql
create table user(
id varchar(10) primary key,
password varchar(10),
name varchar(12),
age int
)
# mysql/initdb.d/testdata.sql
insert into user (id, password, name, age) values ('hong', 'pass', '홍길동', 20);
insert into user (id, password, name, age) values ('james', 'pass', 'James', 25);
insert into user (id, password, name, age) values ('ann', 'pass', 'Ann', 22);
# mysql/Dockerfile
FROM mysql:5.7
# docker-compose.yml
version: "3.3"
services:
db:
container_name: "db"
build: ./docker/mysql
restart: always
tty: true
environment:
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: password
MYSQL_ROOT_PASSWORD: password
ports:
- "3306:3306"
volumes:
- ./docker/mysql/initdb.d:/docker-entrypoint-initdb.d
- ./docker/mysql/conf.d:/etc/mysql/conf.d
networks:
- local-net
# FastAPI
api:
links:
- db
container_name: "api"
build: ./docker/api
ports:
- "8000:8000"
volumes:
- ./code:/usr/src/server
networks:
- local-net
networks:
local-net:
driver: bridge
FROM python:3.9
WORKDIR /django_web
COPY. .
COPY requirements.txt requirements.txt
CMD ["python", "manage.py", "runserver", "0.0.0.0:!!!!"]
version: "3"
services:
databases:
image: mysql
container_name: 프로젝트명db (굳이 지금 쓰는 db와 같을 필요는 없다)
volumes:
- ~/docker/mysql/etc/mysql ('~'==현재경로/)(예시의 mysql은 앞)
- ~/docker/var/lib/mysql:/var/lib/mysql
- ~/docker/mysql/var/mysql:/var/log/mysql
environment:
- MYSQL_DATAVASE = mydb (settings.py에 있는 DATABASES의 이름)
- MYSQL_ROOT_PASSWORD = root
- MYSQL_ROOT_HOST = %
command: [ '--character-set-server=utf8mb4', '--collation-server=utf8mb4_unicode_ci' ]
ports:
- 3306:3306
web:
container_name: 프로젝트명dj:v1
image: seongbaepdl:v1
build: .
container_name: seongbaepdl:v1
command:
- python manage.py reunserver 0:8000
ports:
- "!!!!:!!!!"
volumes:
- .:/mydj ('.:/'==현재위치)
expose:
- "!!!!" (Dockerfile의 !!!!과 같은 수)
https://www.lainyzine.com/ko/article/how-to-remove-all-docker-contaniers-and-images/
docker stats name
원인 : 도커 깨짐
해결 1 : 재설치
해결 2 :
sudo service docker stop
sudo rm -rf /var/lib/docker
sudo service docker start
원인 : 도커 미실행
원인 : 인식 못함
해결 : 파이참 실행시 나오는 안내창 눌러주면 끝나는 문제
원인
db 사용자명, 비밀번호 오류
해결
settings의 databases를 참고
원인
도커 스타트 이후 ps에 실행되는 컨테이너가 없어서 시작과 동시에 꺼짐
해결
docker start 해야지...
원인
Dockerfile의 COPY의 공백 문제
해결
Dockerfile의 COPY. .을 COPY . .로
login': denied: requested access to the resource is denied
원인
도커 허브에 해당 이미지가 없는 경우,
상황
requirements에 적용 됐고 pip install도 완료됐는데 해당 에러가 발생
해결
api 컨테이너로 들어가서 아래의 경로대로 들어간 뒤에 진행
- cd /
- cd usr/local/lib/python3.9/site-packages
- pip install로 해당 모듈 설치
원인
ip 주소를 제대로 지정해주지 못한 경우
- 이번에 발생한 원인은 아마존과 로컬 env나 컴포즈 파일을 바꾸면서 제대로 수정되지 않아서 발생한 문제
해결
-ip=0.0.0.0 으로 지정해주면 정상적으로 실행
해결
도커DB로 들어가서 grant all privileges on . to 'root'@'%' identified by 'root';로 권한주면 끝