Header




로딩 한국 시간: 2025-12-17 12:57:54.474629
로딩 UTC 시간: 2025-12-17 03:57:54.474629

제목: 개발 버전 업

Article Image
대표 이미지

2025-12-03 13:30:58

moljin69

배포 순서

1. 우분투 서버 준비 및 공유기 port forwarding 설정/도커 설치

2. 미리 준비 할 파일들 작성

.gitignore

Dockerfile

nginx.conf

redis.conf

3. container 안으로 넣어야 할 파일들(서버의 fastapi 폴더에 미리 저장)

env.py(alembic init migrations 후에 교체용): 서버 터미널에서 직접 이동시켜야 함

alembic.ini(alembic init migrations 후에 교체용): 서버 터미널에서 직접 이동시켜야 함

nginx.conf와 redis.conf 작성: appContainer로 통일(추후 nginx.conf 파일 수정 불필요하게 하기 위해)

nginx.conf(nginx 서버와 appContainer가 통신하기 위한 파일): nginxContainer build시에 portainer에서 첨부함

redis.conf: redisContainer build시에 portainer에서 첨부함

4. git push

5. portainer Container생성

docker run -d -p <서버port>:9000 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:latest

6. Portainer 접속: appContainer를 만들기 위한 docker image build

7. nginx-basics(혹은 nginx-apps)라는 networks를 만든다.(nginxContainer server와 appContainer server간 통신을 위한 network 설정)

8. container 생성할 때 마운트할 volumes를 portainer에서 만들어 놓음(컨테이너 삭제후 재설치 업데이트시에 데이터들 보존을 위해)

db_migrations

mysql_data

redis_data

app_static

media_default

user_images

user_videos

9. container 생성 및 구동

a. redisContainer

Commands & logging/Override: redis-server /usr/local/etc/redis/redis.conf --requirepass 981011

Volumes:

container/volume: /data ===> volume: /redis-data

container/bind: /usr/local/etc/redis/redis.conf ===> host: /home/moljin/fastapi/redis.conf

Restart policy: Always

b. mysqlContainer

Volumes:

container/volume: /var/lib/mysql ===> volume: /mysql_data

Env: add Environment variables

MYSQL_ROOT_PASSWORD: <비밀번호>

MYSQL_DATABASE: <DB명>

Restart policy: Always

c. nginxContainer

Volumes:

container/bind: /etc/nginx/nginx.conf ===> host: /home/moljin/fastapi/nginx.conf

Network:

nginx-apps

Restart policy: Always

d. appContainer

Volumes:

container/volume: /home/moljin/FastAPIjavaQuill_0.0.2/app/media/user_images ===> volume: /user_images

container/volume: /home/moljin/FastAPIjavaQuill_0.0.2/app/media/user_videos ===> volume: /user_videos

container/volume: /home/moljin/FastAPIjavaQuill_0.0.2/app/media/default ===> volume: /media_default

container/volume: /home/moljin/FastAPIjavaQuill_0.0.2/app/static ===> volume: /app_static

container/volume: /home/moljin/FastAPIjavaQuill_0.0.2/migrations ===> volume: /db_migrations

Network:

nginx-apps

Env:

.env 첨부

Restart policy: Always


### appContainer 내부로 들어가서 파일을 이동시켜 덮어쓰는 방법 ###

### docker exec -it appContainer /bin/bash ===> root@62da4c7afc4e:/home/moljin/FastAPIjavaQuill_0.0.2#

alembic init migrations

### exit 후 moljin@ubuntuserver:에서 아래 명령어로 두개의 파일 이동 덮어쓰기

### docker cp /home/moljin/fastapi/alembic.ini appContainer:/home/moljin/FastAPIjavaQuill_0.0.2/

### docker cp /home/moljin/fastapi/env.py appContainer:/home/moljin/FastAPIjavaQuill_0.0.2/migrations/

### 다시 docker exec -it appContainer /bin/bash

alembic revision --autogenerate -m "Initial migrations"

alembic upgrade head

### exit


docker logs appContainer

docker logs nginxContainer

docker logs mysqlContainer

sudo cd /var/lib/docker/volumes/user_images/_data

docker ps -a

docker rm -f portainer

docker attach appContainer





0

아직 질문이나 댓글이 없습니다.